本文已参与「新人创作礼」活动,一起开启掘金创作之路
- 下面的语句中那个是可综合的
A. initial过程块 B. forever循环语句
C. for循环语句 D. fork join
本题答案选C,
forever 循环次数不确定的循环语句
initial 只能在test bench中使用,不能综合
fork join 不可综合,可以使用非块语句达到同样的效果。
注意:
1)所有综合工具都支持的结构:always,assign,begin,end,case,wire,tri,aupply0,supply1,reg,integer,default,for,function,and,nand,or,nor,xor,xnor,buf,not,bufif0,bufif1,notif0,notif1,if,inout,input,instantitation,module,negedge,posedge,operators,output,parameter。
(2)所有综合工具都不支持的结构:time,defparam,$finish,fork,join,initial,delays,UDP,wait。
(3)有些工具支持有些工具不支持的结构:casex,casez,wand,triand,wor,trior,real,disable,forever,arrays,memories,repeat,task,while。
- case、casez、casex语句均是可综合的。
- 用verilog建立可综合模型的原则,以下不正确的是
A. 不使用用户自定义原语
B. 混合使用上升沿和下降沿触发的触发器
C. 用always过程块描述组合逻辑,应在敏感信号列表中列出所有的输入信号
D. 同一个变量的赋值不能受多个时钟控制,也不能受两种不同的时钟条件(或者不同的时钟沿)控制。
这一题的答案选B, 敏感列表里同时带有posedge和negedge
如:always @(posedge clk or negedgeclk) begin...end
这个always块不可综合。 故B错误 可综合模型避免混合使用上升沿和下降沿触发器
在
$display中,输出列表中数据的显示宽度是自动按照输出格式进行调整的。这样在显示输出数据时,在经过格式转换以后,总是用表达式的最大可能值所占的位数来显示表达式的当前值。在用十进制数格式输出时,输出结果前面的0值用空格带代替。对于其他进制,输出结果前面的0依然显示出来。可以通过在%和表示进制的字符中间插入一个0自动调整显示输出数据宽度的方式。
%0表示用最少位数表示
- 下列哪一个选项不属于Verilog系统函数和任务( )
A. $realtime B. $readmemb
C. $setup D. $time
本题答案选C,$time用来查看当前仿真时刻,返回一个64bit的整数来表示的当前仿真时刻;
$realtime和$time的作用相同,$realtime但是返回的时间数字是一个实型数;
$readmemb用来从文件中读取数据到存储器中;
选项C不是verilog定义的系统函数和任务。
Verilog中有以下的系统函数:
$bitstoreal, $rtoi, $display, $setup, $finish, $skew, $hold,
$setuphold, $itor,$strobe,$period, $time, $printtimescale,
$timefoemat, $realtime, $width, $real tobits, $write, $recovery,
$readmemb和$readmemh用来从文件中读取数据到存贮器中。
$time和$realtime。用这两个系统用函数可以的大当前的仿真时间
$time可以返回一个64位的整数来表示当前仿真时刻值,该时刻是以模块的仿真时间尺度位基准的
$realtime返回的时间数字是一个实型数。该数也是以时间尺度为基准的。
- 下列关于静态,动态时序模拟的优缺点说法错误的是()
A. 静态时序分析是提取出整个电路存在的所有时序路径, 计算信号在这些路径上的传播延时,检查信号的建立和保持时间是否满足时序要求
B. 静态时序分析可以对芯片设计进行全面的时序验证和功能验证,验证每一条路径,发现时序的重大问题,比如建立时间和保持时间冲突,slow path以及过大的时钟偏移
C. 动态时序模拟就是仿真,自己可能写不出完备的测试向量
D. 动态时序模拟能在验证功能的同时验证时序
本题答案选B,静态时序分析不能进行功能验证 静态时序分析是采用穷尽分析方法来提取出整个电路存在的所有时序路径,计算信号在这些路径上的传播延时,检查信号的建立和保持时间是否满足时 序要求,通过对最大路径延时和最小路径延时的分析,找出违背时序约束的错误。 它不需要输入向量就能穷尽所有的路径,且运行速度很快、占用内存较少,不仅可以对芯片设计进行全面的时序功能检查,而且还可利用时序分析的结果来优化设计,因此静态时序分析已经越来越多地被用到数字集成电路设计的验证中。 动态时序模拟就是通常的仿真,因为不可能产生完备的测试向量,覆盖门级网表 中的每一条路径。因此在动态时序分析中,无法暴露一些路径上可能存在的时序问题。
==表示逻辑相等,左右两边均为不定态时不能判断其逻辑上是相等的。
===表示位全等,x与其本身是相等的。
== 两边只要有一方出现x或z,结果都为x;=== 就是x和z态也比较,全等才为真
这是因为当A第一次发生时,Count的值由0变1,然后时间控制@(B)阻挡了进程。
位拼接运算符必须指明位数,若不指明则隐含着为32位的二进制数(即整数)