瑞芯微校招笔试:Verilog实现一个2位带进位全加器,画出门级电路

//2位加法器顶层模块
module top(s, cout, a, b, cin);
	//输入输出端口及变量定义
	output [1: 0] s;
	output cout;
	input [1 : 0] a, b;
	input cin;
	wire  carry;
	
	//采用结构描述的方式实现一个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

门级电路:

 瑞芯微校招笔试:Verilog实现一个2位带进位全加器,画出门级电路_第1张图片

展开:是一个1bit全加器

瑞芯微校招笔试:Verilog实现一个2位带进位全加器,画出门级电路_第2张图片 

可列写真值表 ,化简卡诺图,都是血淋淋的教训呀。。。。。

2)DFT测试手段:不是很懂测试

参考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

你可能感兴趣的:(数字IC备战校招,offer++)