数字IC备战校招|瑞芯微校招笔试(Verilog实现一个2位带进位全加器,画出门级电路)

//2位加法器顶层模块 module top(s, cout, a, b, cin); //输入输出端口及变量定义 output [1: 0] s; output cout; input [1 : 0] a, b; input cin; wirecarry; //采用结构描述的方式实现一个8位加法器 fulladder m0(s[0], carry, a[0], b[0], cin); fulladder m1(s[1], cout, a[1], b[1], carry); endmodule//1位全加器模块 module fulladder(s, cout, a, b, cin); //输入输出端口定义 output s, cout; input a, b, cin; //采用行为描述的方式实现1位全加器 assign s = a ^ b ^ cin; assign cout = a & b | a & cin | b & cin; endmodule

门级电路:
数字IC备战校招|瑞芯微校招笔试(Verilog实现一个2位带进位全加器,画出门级电路)
文章图片

展开:是一个1bit全加器
数字IC备战校招|瑞芯微校招笔试(Verilog实现一个2位带进位全加器,画出门级电路)
文章图片

可列写真值表 ,化简卡诺图,都是血淋淋的教训呀。。。。。
2)DFT测试手段:不是很懂测试
【数字IC备战校招|瑞芯微校招笔试(Verilog实现一个2位带进位全加器,画出门级电路)】参考https://www.cnblogs.com/YINBin/p/7147872.html
3)SDFF cell的结构,并说明如何切换shift & capture 状态
http://www.doc88.com/p-504503775688.html
4)setup violation 和 hold time violation
自己编写SDC文件进行约束。
setup violation
主要就是设法剪掉critical path的delay,要么pipeline(流水线分一下),要么retiming,要么把combination往前后级挪一挪。
hold time violation
hold time violation是clock tree的skew引起的。主要的宗旨就是设法加前面一级combination的delay,比如加buffer什么的。这时候hold time不满足必须让前前面延迟大一些,并大到比clock period还大出至少一个hold time来。也可以适当把clock period缩小。不过hold time并不是自己能控制的,挺闹心的。
在综合时,综上所述,
setup violation是由于前级组合的延迟过大引起的,因此要用set_max_delay来限制,
hold violation是由于前级组合延迟过小引起的,因此不能让他太小,要用set_min_delay来限制。
5)中值滤波器
https://www.cnblogs.com/aslmer/p/5786978.html

    推荐阅读