一.Sv的主要数据类型 1. 四态数据类型:0,1,X,Z 主要有reg,integer(有符号数据类型),logic(相当于reg) 2. 二态数据类型:0,1 主要有bit,byte,shortint,int(32位),longint note1: reg,logic,bit 数据类型位宽可以改变。 note2:bit类型即可用于变量,也可用于线网。 二.用户定义类型---typedef typedef existing_type mytype_t; `ifdefSTATE2 typedefbit bit_t ; `else typedeflogic bit_t; endif note1:好的命名规则用”_t”做后缀。 note2:用typedef可以很容易的在4态和2态逻辑仿真之间加快仿真速度。 三.systemverilog表示数字的语法 logic [3:0] data_i; data_i <= `1;(data_i=4’b1111) 四.特定逻辑过程 1. always_comb always_comb is used todescribe combinational logic. It implicitly creates a complete sensitivity listby looking at the variables and nets that are read in the process, justlike always @* in Verilog-2001 2. always_latch always_ff always_latch and always_ff are used for infering transparent latchesand flip-flops respectively. note : always_comb begin tmp1= a&b; tmp2= c&d ; y= tmp1|tmp2 ; end always_latch begin if(en) q <= d ; end always_ff(posedge clk or negedge rst_n) begin if(!rst_n) q<= 0 ; else q <= d; end 3.alwasy_comb 和 void 函数 void 函数行为相当于0延时的任务 五.设计意图—unique/priority 1.unique,priority case ,所有可能的都已经定义了,其它任何可能都是错误的。 priority case (1’b1) irq0: irq= 4’b1 <<0; irq1: irq= 4’b1 <<1; irq2: irq= 4’b1 <<2; irq3: irq= 4’b1 <<3; endcase note:irq0 到 irq3中至少一个必为高,否则仿真出错 ,case后面不能加default,否则会使priority关键字失效。 unique case (1’b1) sel[0]: muxo = a; sel[1]: muxo = b; sel[2]: muxo = c; endcase note: sel ==3’b011 时,仿真出现错误,任何没有预料到的sel值将会使仿真出现错误。case语句最后面后面有default时,没有预料到的sel值不会在仿真中出现错误。 六.枚举(enumerated)数据类型 typedefenum { red , yellow , green , black, bule , white } clolors_t ; 七.systemverilog隐含端口连接 multop1 multop1 (.mop1, .data, .ld_multop1, .clk, . rst_n); 暂时就这么多吧,边学边做点笔记
|