2022年7月更新!!!
1、组合逻辑电路的冒险现象是由于()引起的?
2、芯片制造中,工艺节点28nm,12nm,7nm的含义?
3、哈佛结构和冯诺依曼结构?
https://blog.csdn.net/mahoon411/article/details/119078925
4、华为2021数字IC笔试题:异或门最少使用几个2选1 mux?(链接可点)
5、有符号数乘加位宽计算?
答案:7、9?
6、fifo深度计算?
第一种情况:写600个数据需要600个输入cycle,在这期间一直在读数据,这段时间为1/A * 600。在这段时间内读出的数据个数,也即读cycle个数是,1/A * 600 * 0.6A = 360,因此最小深度是240。
第二种情况:考虑到可能刚好前1000个cycle的后600个cycle写数据,后1000个cycle的前600个cycle写数据,那么就是一次写1200个数据。同理可得,最小深度是1/A * 1200 - 1/A * 1200 * 0.6A = 480。
2022年4月更新!!!
1、如果在多个initial里面并行的在同一时刻对同一个变量进行赋值,当#数量相同时,就是下面的initial块起作用,否则就是#数量多的起作用。例如:左图在20时刻,b = 10;右图在20时刻,b = 20。![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ce92e7ee93ce0276766e0deed11a6f84.png)
2、写一个N倍频的仿真模型。
3、功能覆盖率和代码覆盖率
https://zhuanlan.zhihu.com/p/240126362
4、verilog中的二等号在数据中有不确定的值时会返回x,三等号则要完全相等才返回1,否则返回0。
5、task和function
- task可以包含task和function,function只能包含function。
- task和function都不能在过程语句中被定义,并且不能包含always和initial等引导的过程语句。
- task有输入输出,function没有常规意义上的输出端口。两者都可以在过程语句中被调用,后者还可以在连续赋值语句中被调用,因为它有返回值。
- function不能消耗仿真时间;task可以消耗仿真时间;比如function不能带有#100的时延语句、不能有@(posedge clk)、不能有wait(ready)的阻塞语句。
- 要想可综合,task和function内部必须是组合逻辑。
6、一批IC样品在测试中发现有setup或者hold时序问题,现取A,B,C,D四种样品进行测试。A降温后停止工作,则可能是(setup(40nm以下工艺)/(hold(40nm以上工艺))问题。B升温后停止工作,则可能是(hold(40nm以下工艺)/(setup(40nm以上工艺))问题。C降压后停止工作,则可能是(setup)问题。D升压后停止工作,则可能是(hold)问题。
解析:温度和电压对应到管子行为上就是对于单个管子电流的影响。这里注意温度这个选项。升温会使载流子速率降低,但是相应的也会使Vth降低。这其实对于电流大小的影响是两个反方向的,要看谁占主导因素。对于40nm以上的工艺,而升温对于Vth的影响可以忽略,因此载流子速率对于电流的影响占主导因素,因此升温导致管子电流减少,充放电时延增加。而对于40nm以下的先进工艺,升温使Vth显著降低,因此Vth占主导,升温电流增大,时延减小。
对于电压,升压电流大时延小,降压电流小时延大。
setup问题是时序关键路径总时延过大,而hold问题则是总时延过小。
7、看波形写verilog代码
对in[1]进行上升沿检测,然后用检测结果替换in[1]之后赋值给pedge。
module pedge (
input clk,
input [7:0] in,
output [7:0] pedge
);
wire in_1_pos;
reg in_1_r1,in_1_r2;
reg [7:0]pedge_r;
always @(posedge clk ) begin
in_1_r1 <= in[1];
in_1_r2 <= in_1_r1;
end
always @(posedge clk ) begin
pedge_r <= {in[7 -: 6],in_1_pos,in[0]};
end
assign in_1_pos = in_1_r1 & !in_1_r2;
assign pedge = pedge_r;
endmodule //pedge
8、脉冲宽度调制器PWM
9、c语言判断大小端
10、c语言,不使用库函数,比较两个字符串是否相等
int strcmp(char *source, char *test)
{
while (*source == *test)
{
if ( (*source == '\0') && (*test == '\0') )
{
return 0;
}
source++;
test++;
}
return -1;
}
11、建立时间和保持时间
(1)关键路径指的是组合逻辑时间延迟最大的路径,所以图1中的关键路径是acefh。
(2)由于两个Mux的enable信号是相反的,所以只可能有两条路径,分别是acg和bdf,bdf的时间延迟更大,所以它是关键路径。
(3.1)在计算建立时间时,按照组合逻辑时延更大的那条路径,也即路径bdf算:(Tck->q) + Tsetup + 1 + 4 + 2 + 6 + 2 + 1 <= Tclk + Tskew。
(3.2)在计算保持时间时,按照组合逻辑时延更小的那条路径,也即路径acg算:Thold + Tskew <= (Tck->q) + 1 + 5 + 2 + 3 + 2 + 1。
通过以上的计算,就可以得出保持时间和建立时间都没有违例。