一、基础知识
1、Verilog中阻塞与非阻塞的区别?
2、C语言编译过程?
3、DC之后为啥要进行形式验证?
如果DC综合后不修改任何东西,这种情况下其实基本上是不会出现问题的。但是大多数情况下,在DC之后,会对网表手动做一些处理,这个时候就需要形式验证了。不止DC,DFT或者最后的布局布线之后,只要可能改变逻辑的地方,都可以进行形式验证。
4、hold 违例什么情况下会发生?组合逻辑过短,那么短于哪个值才会大概率发生违例?
当组合逻辑过短时,容易发送hold违例。从hold的公式可以看出,Tco + Tcomb ≥ Tskew + Thold,一般Tco 和 Thold在器件选定之后我们更改不了。所以通常的做法是让尽可能保证Tcomb大于Tskew,当前者小于后者时容易发生hold违例。那么首选的办法就是减小时钟偏移,在修正了时钟偏移之后还是违例时,再考虑修改组合逻辑。
5、时序约束?
6、不知道时钟频率关系的情况下,单bit同步?正确答案是啥呀?
可以在CLKA的脉冲到来时,一直拉高某个信号,下一个脉冲到来时再取反,而在CLKB时钟域就对该信号做双边沿检测,检测到边沿跳变就也把某个信号拉高,这样就将脉冲同步过来了。前提是CLKA两个脉冲之间的间隔要大于CLKB的一个周期。如果脉冲太密集,可以考虑计数脉冲个数,然后将计数值同步过来(用格雷码),在CLKB时钟域生成相同个数的脉冲?
7、在两个寄存器采样边沿不一样的时候建立时间/保持时间如何check?谁的slack会变大,谁的会变小?
- 红色箭头是前一个寄存器下降沿发送数据,后一个寄存器上升沿采集数据的情况。紫色箭头是前后都是上升沿有效的情况。
- setup time的slack会变小,check时会更容易违例。
- hold time的slack会变大,check时会更不容易违例。
8、异步fifo里的格雷码在同步过程中不同bit传输的延迟是否需要约束?
9、建立时间和保持时间违例怎么解决?
10、FPGA开发和IC开发的联系与区别?
11、用D触发器和基本门电路搭三分频电路?
12、Verilog语言和C语言的区别?
13、静态功耗、动态功耗,如何降低?
14、常用逻辑化简公式?
15、UART/SPI/I2C各自的特点与区别?
- UART、SPI、I2C三个通讯方式
- 终于搞清了:SPI、UART、I2C通信的区别与应用
- UART和SPI是全双工,SPI和I2C是同步。