web是个很黄很暴力的领域

家有猪神,我也变得越来越猥琐,思想越来越肮脏了。反正很黄很暴力这个锅,我是绝对不能背的。从知道网页是怎么做出来的开始,那些英文缩写名词,在我看来一直都是非常高大上的,是知识和能力的象征,然而,就在昨天,我居然想到了,web求职者简历的新写法:

==

以下内容很黄很暴力,需要手动分割,打开文章需三思,请确定父母子女都不在可视范围内

== Continue reading “web是个很黄很暴力的领域”

乐乐的鼻鼻虫

昨天半夜,乐乐一觉醒来后,大概觉得鼻子有些难受吧,自己抠出来一小颗鼻鼻虫,一边和我说:“妈妈,乐乐有鼻鼻虫”,一边很小心地把鼻鼻虫捏在手里。我便拿来一张湿纸巾,给乐乐擦了下鼻子,顺便把乐乐的手擦了一下,准备把纸扔掉时,乐乐居然“哇”的哭了出来,说要自己的鼻鼻虫。

如果这是一部漫画,我当时的表情一定是因为过分吃惊而炸毛,外加无数黑线垂下,然后读者笑完以后便不了了之了,只可惜不是,我必须处理这个鼻鼻虫的问题。所以这里有个前序的故事:

某天中午带乐乐午睡。乐乐也是自己抠出来一颗鼻鼻虫,然后带着哭腔和我说:“妈妈,乐乐有鼻鼻虫,要用湿纸巾擦擦。”那是第一次,床头并没有备着湿纸巾,所以我随手接过乐乐的鼻鼻虫,然后哄着她好好睡觉。然而,她居然大哭起来,说要自己的鼻鼻虫,于是我又把还在手上的鼻鼻虫还给了她。结果她哭得更厉害,带着尖叫。我只好强撑着半睡状态、疲软的身体起来,在厅里翻找湿纸巾,给乐乐把鼻子和手都擦得干干净净的,还在乐乐的指示下,把湿纸巾扔到她指定的垃圾桶里,她才终于安静下来,美美地睡了。

Continue reading “乐乐的鼻鼻虫”

雨水时节,轶事二三件

春节假期过后,乐乐病了一场,高烧40度两天,昏昏沉沉地睡了一个星期,体力在两个星期后依然没有完全恢复。雨水节气过后,北京下了一场不小的雪,乐乐正好赶上,痛快地玩了一晚上的雪。这场冷空气影响时间不长,雪后气温马上就回升了,所以我用小推车推着乐乐到五彩城去玩了一天。

乐乐病过后改变不小,一直不愿意吃肉的小朋友终于吃上肉了。昨天在阿香米线,乐乐自己吃了一个鸡翅,不小的一碗米线,和一些菌菇和蔬菜,终于长成了不挑食的好孩子。大概是因为这回我和乐乐一起生的病,乐乐恢复得比我快,所以我比乐乐多躺了两天床,乐乐也学会了自己玩耍。就算中午我自己睡午觉,乐乐也能自己玩,自己照顾自己两个小时。最近乐乐也老喊着要自己睡自己的小公主床,不过考虑到乐乐病刚好,现在供暖也不那么充足了,所以我坚持带着乐乐一起睡,毕竟小朋友晚上踢被子还是很厉害的。 Continue reading “雨水时节,轶事二三件”

人生在于展示,而不是攀比

相信,中国人绝大部分都是从小在各种攀比中爬过来的,于是都习惯于在攀比中求存,都是自卑与自大的矛盾体。自大是因为在各种攀比关系中,总有那么一两个方面自己是可以优胜的,就是这样的“优胜”支撑着自己虚空的自大;而自卑,则是因为在大部分的攀比中,自己都是落后的,很正常,人能有一两个特长已经很了不起了,大部分不是特长的特质,必然无法“优胜”。

乐乐一岁以后,我开始每天陪着乐乐看BBC的儿童节目,这些动画片给我颇多感触。

《天线宝宝》:曾经妹妹小的时候很爱看,我当时上高中,觉得这是一部很渣的儿童节目。人物形象怪异、笨重,插播的小视频毫无营养,这样平常的笨孩子凭什么拍视频,出现在儿童节目中,难道我们不应该推选“优秀”吗?我当年甚至看不起妹妹,觉得喜欢这种节目的孩子不会有什么出息,我一定不会让我的孩子接触这些垃圾。 Continue reading “人生在于展示,而不是攀比”

为了遗忘,所以记录

这是一个梦,在过去的几个月里,我反复地解读它,我曾经以为这个梦的出现是为了帮助走出生活的困惑,然而我却发现我似乎又陷入了解读的困惑之中。现在记录这个梦,是为了把它遗忘掉。

这是一个长着一头乌黑油亮的短直发的漂亮孩子。它–之所以是它,因为我不知道它是男生还是女生–喜欢站在房子里,灯光不是那么充足的地方,总着低着头,看起来很不开心。屋子里只有我、乐乐和它,气氛有些忧郁。乐乐坐在离我不远的地方独自玩着玩具,很专注。我的心情有些激动,马上就要大学毕业了,有些兴奋,也有些紧张,不知道这个房子还能住多久,我要赶紧收拾东西了,趁着乐乐不闹,但是我要收拾些什么呢?这个屋子里的东西,有多少真正属于我? Continue reading “为了遗忘,所以记录”

期待春暖花开日

北京即将供暖,冬天即将来临时,我和表弟说,北京很快就要降到零度以下了,表弟回答我:世界真大,我们还在穿短袖呢。还记得高中时,地理老师告诉我们,西方的四级划分法比中国的更科学,中国的节气划分法不够科学。我当时深以为然,毕竟最少在广东来说,节气对季节的提示并不够典型。直到两年前来到北京,我才明白古人以节气划分四季的智慧所在。

北京的冬天是很难受的,雾霾、大风、干燥、低温,用网上的一句话,这是根本就不适合住人的四个月。不过北京不适合居住的时间并没有这么长,大概也就两个月吧,树叶一般在立冬以后才掉完。大概还要再过半个多月,失去植被保护的环境问题才会出现,也就是霾开始越来越重。立春以后,天气便会变得很舒适,虽然温度还是偏低,不过气温已经明显回暖,雾霾散尽,很是春暖景明。 Continue reading “期待春暖花开日”

uvm_config_db的生效顺序

2016年9月,我去面新的工作,面试官问了我一个问题:如果在不同的component的同一个phase中对uvm_config_db#(int)的某个key set不同的值,那么最终哪个值会生效?当时只是肤浅的回答:后设置的生效。然后面试官引导了一下,问,那在build_phase中呢?回答是最顶层的设置生效。虽然答案是对的,但是我想并没有达展现是面试官想要的。

诚然,UVM对uvm_config_db的设计思路是保证最后设置的生效,但是为什么会在build_phase的时候做特殊的判断呢?其他phase为何不需要?回到面试官的问题,其实他是想问uvm_phase的执行顺序。一旦了解uvm_phase的执行顺序,那么上面的问题就是自然而然的。

uvm_phase按执行顺序,分为两类:top-down和bottom-up。目前只有build_phase是top-down的,其他都是bottom-up。

通常我们可能会在不同层次上的component里对uvm_config_db的某个key值进行操作,比如在VIP中。但是我们有希望可以在上层的component中进行改写控制,所以,在build_phase这样的top-down的phase中,需要额外加以控制,保证上层的component的设置生效。而对于bottom-up的phase,只需要按照自然顺序覆盖即可。

A trap of SystemVerilog inline constraint

In Constraint Random Verification(CRV), we may write the inline constraint with below format:

 

In most cases,  this works. After be randomized, the value of item.var1 is _something_. But have you ever thought about the result of below codes:

 

You will find that the  both item.var1 is not set to 10, but a random value. Why? This is because the ‘scope’. For inline constraint, it first looks up the var1 in item scope, thus it finds var1. The inline constraint equals to:

 

That means assign the value to itself. So the result is a random value.

To achieve our goal, there are two ways.

First is rename the local variable name from var1 to _var1.

The second is add “local::” contributor before the local variable var1. Shown as below.

 

 

Then the item.var1 will be set to 10 after randomization.

A summary: The priority of the scope in inline constraint is

 

SV DPI Scope

SV的DPI(Directed Program Interface)提供了SV与其他语言(C/C++)通信的桥梁。本文不会讲解DPI的基础知识,只针对Scope这一概念进行解释,因为这是在DPI编程中常遇到的,也是比较难debug的问题。

对于SV呼叫C,不会存在Scope不对找不到对应的C function的问题。但是C呼叫SV,则会碰到这种问题。VCS仿真器会给出如下Log

Error-[DPI-DXFNF] DPI export function not found

The DPI export function/task ‘sv_task’ called from a user/external  C/C++/DPI-C code originated from import DPI function ‘c_main’ at file ‘test.sv'(line 3) is not defined or visible.

Please check the called DPI export function/task is defined in the mentioned which invokes that DPI export function/task is made with ‘context’. Another work-around is using svGetScopeFromName/svSetScope to explicitly set the scope to the module which contains the definition of the DPI export function/task.

Continue reading “SV DPI Scope”