日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > > 處芯積律

1

SystemVerilog

1. vector向量的bit-select和part-select尋址


向量的bit-select是從vector、packed array、packed structure、parameter或concatenation變量中選取某1-bit。用于尋址bit的index如果超出變量范圍或有x態(tài)或有z態(tài),那么對(duì)于4-state bit則返回x,對(duì)于2-state bit則返回0。對(duì)于scalar、real變量和real參數(shù)進(jìn)行part-select是無(wú)效的。


Example:

logic [2:0] abc;abc[1] = 1’b1; // bit-select


向量的part-selects是指尋址幾個(gè)連續(xù)的bits,可分為non-indexed part select和indexed part-select兩種類型。


non-indexed part select語(yǔ)法如下:

vect[msb_expr:lsb_expr]


其中msb_expr和lsb_expr必須是常數(shù)整型表達(dá)式。


Example:

logic [2:0] abc;abc[2:1] = 2’b1; // non-indexed part select


indexed part-select語(yǔ)法如下:

logic [15:0] down_vect;logic [0:15] up_vect;down_vect[lsb_base_expr +: width_expr]up_vect[msb_base_expr +: width_expr]down_vect[msb_base_expr -: width_expr]up_vect[lsb_base_expr -: width_expr]


其中msb_base_expr和lsb_base_expr必須是整型表達(dá)式,width_expr必須是正常數(shù)整型表達(dá)式。msb_base_expr和lsb_base_expr在運(yùn)行時(shí)可以變化。part-select的位寬等于width_expr。


Example:

logic [31: 0] a_vect;logic [0 :31] b_vect;logic [63: 0] dword;integer sel;a_vect[ 0 +: 8]  // == a_vect[ 7 : 0]a_vect[15 -: 8]  // == a_vect[15 : 8]b_vect[ 0 +: 8]  // == b_vect[0 : 7]b_vect[15 -: 8]  // == b_vect[8 :15]dword[8*sel +: 8] // variable part-select with fixed width


當(dāng)part-select部分超出變量范圍或part-select是x態(tài)或z態(tài)的話,那么對(duì)于讀,對(duì)于超出的部分返回x態(tài),對(duì)于寫,只有在范圍內(nèi)的bits才會(huì)生效。



2. SV多態(tài)的演示




3. task和function的參數(shù)


有如下類型參數(shù):

input // copy value in at beginningoutput // copy value out at endinout // copy in at beginning and out at endref // pass reference


task/function的參數(shù)列表中,定義為output類型的不能帶default value。


task/function的參數(shù)列表中,如果以ref傳遞object handler,那么在subroutine里改變了object handler(這里是指句柄,而不是object內(nèi)容),外部的也會(huì)被改變了。如果以input傳遞的,那么在subroutine里改變了object handler,外部不會(huì)改變。所以,為了預(yù)防傳入的object handler被改變了,可以在ref前面加上const,這樣只能改變object內(nèi)容,而不會(huì)把object handler變了。



4. In-line隨機(jī)變量控制


在使用class.randomize()的時(shí)候,可以在randomize()的括號(hào)里直接加入class的變量名,這樣表示是對(duì)指定的變量名進(jìn)行隨機(jī),而把該class的其他變量當(dāng)作state變量,也就是保持值不變。


Example:

class CA; rand byte x, y; byte v, w; constraint c1 { x < v && y > w );endclassCA a = new;a.randomize(); // random variables: x, y; state variables: v, wa.randomize( x ); // random variables: x; state variables: y, v, wa.randomize( v, w ); // random variables: v, w; state variables: x, ya.randomize( w, x ); // random variables: w, x; state variables: y, v


此外,如果多個(gè)變量在constraint里存在約束關(guān)系,那么就算是單個(gè)變量隨機(jī)情況下,也符合該約束的。



5. interface的clocking


clocking drv_cb @(posedge HCLK); default input #1step output #0; output test;endclockingclocking drv_cb1 @(posedge HCLK); default input #1step output #2ns; output test_1;endclocking


ahbp_if.drv_cb.test <= cnt; // cb的賦值是馬上生效的,即cnt和drv_cb.test的值立馬一致,但是ahbp_if.test的值需要跟著output #0來(lái)驅(qū)動(dòng)的。比如下面的例子。


ahbp_if.drv_cb1.test_1 <= cnt; // 這個(gè)例子的ahbp_if.test_1的值是在執(zhí)行到這條語(yǔ)句的2ns后才會(huì)送到ahbp_if.test_1端口上的。


如下這個(gè)波形和log。



6. ===、!==、==、!=的區(qū)別


===和!==的結(jié)果是確定的,要么0,要么1。該符號(hào)是把x和z都拿進(jìn)去比較的,如果兩邊不相等,那么結(jié)果為0,如果全等,那么結(jié)果為1.


==和!=結(jié)果可能會(huì)有x態(tài)或z態(tài)。該符號(hào)是不比較x或z的,一旦rhs或lhs出現(xiàn)x或z,那么比較的最終結(jié)果就是x。在沒有x或z之后,兩邊相等則結(jié)果1,兩邊不相等則結(jié)果為0.


if(expresion)和while(expression)中,expression必須為1才執(zhí)行,如果expression為x或z,那么都認(rèn)為是false的。但如果expression是個(gè)多bit的,如果多bit中有為1的bit,那么不管其它bit是x或z,都是True。




7. generate嵌套問(wèn)題


generate可以嵌套,但只需要外部寫上generate,內(nèi)部的嵌套不需要寫上generate的。


2

Gvim

1. 刪除每行前10個(gè)字符:

:%s/^.\{10\}//

# 其中,%表示所有行,s表示替換,"%s"可用"1,$"代替(下同);正則表達(dá)式"/^.\{10\}//"中,^表示行首;"."表示要?jiǎng)h除的字符個(gè)數(shù),".\{10

\}"表示刪除10個(gè)字符,可用10個(gè)"."表示;



2. 刪除每行后10個(gè)字符:

:%s/.\{10\}$//

# 其中,"$"表示行尾,其他同上



3. 在每行行首添加相同的內(nèi)容:

:%s/^/要添加的內(nèi)容



4. 在每行行尾添加相同的內(nèi)容:

:%s/$/要添加的內(nèi)容



5. 顯示TAB鍵

:set list TAB

# 文件中有 TAB 鍵的時(shí)候,你是看不見的。要把它顯示出來(lái),TAB鍵會(huì)顯示為 ^I,$顯示在每行的結(jié)尾,表示換行



6. 刪除空格行

:g/^\s*//g



7. 刪除行首空格

:%s/^\s*//g



8. 刪除行尾空格

:%s/\s*$//g



9. 刪除特定字符的某些行

g/pattern/d

# 是找到pattern, 刪之


v/pattern/d

#是找到非pattern,刪之






本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉