北邮 电子科学与技术 ASIC专业实验 实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
存储器、数据通路和控制器这三部分的基本关系下图所示:
图 2-1 CPU 基本结构
对图 2-1 中的结构进行细化,可以得到一个简单的架构,如下图所示。该 CPU 采用总线结 构,即控制器所需的指令和数据通路所需的数据都是从总线上得到的。
ASIC 专业实验
指导老师:刘雯
图 2-2 CPU 的简单架构
然后是按部就班的每个模块的逻辑设计,现将我们自行添加的代码部分附于下:
target_library 用于设置综合时所要映射的库,包含有单元电路的延迟信息,DC 综合时 就是根据 target_library 中给出的单元电路的延迟信息来计算路径的延迟。
set SYMBOL_LIBRARY_FILES /home1/lib/smic/aci/sc-x/synopsys/smic13g.sdb;
LAB 3
register.v
//自行添加 dffr 及 mux 模块调用代码
mux m7
dffr d6
(
(
.a(out[7]),
.d(n1[6]),
.b(data[7]),
.q(out[6]),
.out(n1[7]),
.clk(clk),
.sel(load)
.rst_(rst_)
);
);
dffr d7
endcase end
指导老师:刘雯
LAB 7
control.v
//状态转移代码 always @(state)
nextstate<=state+1; //剩余代码 case(state)
3'b000://0 begin sel<=0; rd<=alu_op; ld_ir<=0; inc_pc<=(opcode==`SKZ)&zero|(opcode==`JMP); halt<=0; ld_pc<=opcode==`JMP; data_e<=!alu_op; ld_ac<=alu_op; wr<=opcode==`STO; end
3'b001://1 begin {sel,rd,ld_ir,inc_pc,halt,ld_pc,data_e,ld_ac,wr}<=9'b1_0_0_0_0_0_0_0_0;
ASIC 专业实验
指导老师:刘雯
end 3'b010://2
begin {sel,rd,ld_ir,inc_pc,halt,ld_pc,data_e,ld_ac,wr}<=9'b1_1_0_0_0_0_0_0_0;
到这一步(即逻辑综合前)的 control.v 代码如截图所示:
ASIC 专业实验
指导老师:刘雯
ASIC 专业实验
指导老师:刘雯
ASIC 专业实验
指导老师:刘雯
我写的测试文件是佩尔数列,一开始是觉得有斐波那契数列的例子在那儿,数列类型的 都比较容易实现,最开始我模仿示例,想得太过简单,只添加了一行 ADD N2,运行时程序 一直在跑,没有 halt,仔细推敲了逻辑之后,添加了一个变量 N3 放数据,使得逻辑清楚, 得到了理想的结果。
二、课程内容
1.语言级仿真
半期前的实验内容主要是语言级仿真,在两个晚上由韩可老师和路卫军老师代授的理论 课后,我们正式进入了实验室。
首先由 Xmanager 登录到 Linux 界面,由于对实验环境不是很熟悉,我们在输入命令时 比较慢。因为比较依赖同组的小伙伴,每次编写文件时都问一遍“保存是什么指令啊”“是:wq 保存吧?”,再加上后期熟悉了 Linux 界面以及文档基本创建完成后,多是使用图形界面的 命令,造成了期中验收时的操作不熟悉,使我非常沮丧。
ASIC 专业实验
在 cpu_test.v 里添加的字段如图所示:
指导老师:刘雯
理论课的时候老师说要完成一个 CPU 的设计是我觉得这个课程特别难,岂不是学完了 就能做电脑了?拿到实验书后,我发现核心的代码是现成的,我们要做的不过是敲进去的工 作,没有通过就反复查找有没有讹误的地方,只追求最后仿真的实现,而忽略了理解的过程, 使得在验收的时候对于老师的问题表现十分不佳,这种失败也使得我在后半期的实验中打起 了十二分精神,每一步都自己再过一遍。
end 3'b011://3
begin {sel,rd,ld_ir,inc_pc,halt,ld_pc,data_e,ld_ac,wr}<=9'b1_1_1_0_0_0_0_0_0;
end 3'b100://4
begin {sec,data_e,ld_ac,wr}<=9'b1_1_1_0_0_0_0_0_0;
ASIC 专业实验
指导老师:刘雯
电子工程学院
ASIC 专业实验
实验报告
班 级:2012211205 姓 名:翁雪妍 学 号:2012210961 指导老师:刘雯
ASIC 专业实验
指导老师:刘雯
一、课程任务
1.完整完成一个 CPU 芯片的功能设计并通过验证(包括前端逻辑设计和仿真),主要对应课 程的 LAB 1 – LAB 8 部分 2.熟悉综合的过程,并验证综合后的电路(逻辑综合) 3.对关键部件进行布局布线(版图设计)
symbol_library 为指定的符号库,是定义了单元电路显示的 Schematic 的库。用户如果想 启动 design_analyzer 或 design_vision 来查看、分析电路时需要设置 symbol_library。
#dc_setup.tcl
set_app_var link_library”*$target_library”
LAB 4
alu.v
//电路描述 always@(opcode or data or accum)
ASIC 专业实验
begin if (accum==8'b00000000) #1.2 zero = 1'b1; else #1.2 zero = 1'b0;
case(opcode) 3'b000:#3.5 out=accum; 3'b001:#3.5 out=accum; 3'b010:#3.5 out=accum+data; 3'b011:#3.5 out=accum&data; 3'b100:#3.5 out=accum^data; 3'b101:#3.5 out=data; 3'b110:#3.5 out=accum; 3'b111:#3.5 out=accum; default:#3.5 out=8'bx;
//例化寄存器 //例化时钟 //添加检测信号 register r ( .out(out), .data(data), .load(load), .rst_(rst_), .clk(clk) );
clock c (
.clk(clk) );
initial begin $timeformat(-9,1,"ns",9); $monitor("time=%t,clk=%b,data=%h,load=%b,out=%h", $stime,clk,data,load,out ); $dumpvars(2,register_test); end
.d(n1[2]), .q(out[2]), .clk(clk), .rst_(rst_) );
mux m1 ( .a(out[1]), .b(data[1]), .out(n1[1]), .sel(load) ); dffr d1 ( .d(n1[1]), .q(out[1]), .clk(clk),
总的来说,我们完成的是 Top-down 自顶向下的 CPU 设计,一个基本的 CPU 要包括三部 分功能:数据存储、数据运算和控制部分。与之相对应的硬件结构也分为三部分:存储器、 数据通路和控制器。
存储器存放指令和数据;数据通路包括 ALU、程序计数器等,主要功能是对操作数进行 运算,得到结果,并产生程序计数器的值,作为要执行的下一条指令的地址;控制器内有指 令寄存器,它对指令进行译码,产生相应的控制信号,完成对存储器和数据通路部分的控制。
end 3'b111://7
begin sel<=0; rd<=alu_op; ld_ir<=0; inc_pc<=(opcode==`SKZ)&zero; halt<=0; ld_pc<=opcode==`JMP; data_e<=!alu_op; ld_ac<=0; wr<=0;
end endcase
end 3'b101://5
begin {sel,rd,ld_ir,inc_pc,ld_pc,data_e,ld_ac,wr}<=8'b0_0_0_1_0_0_0_0; halt<=opcode==`HLT;
end 3'b110://6
begin {sel,ld_ir,inc_pc,halt,ld_pc,data_e,ld_ac,wr}<=8'b0_0_0_0_0_0_0_0; rd<=alu_op;
mux m3 ( .a(out[3]), .b(data[3]), .out(n1[3]), .sel(load)
ASIC 专业实验
); dffr d3 ( .d(n1[3]), .q(out[3]), .clk(clk), .rst_(rst_) );
mux m2 ( .a(out[2]), .b(data[2]), .out(n1[2]), .sel(load) ); dffr d2 (
ASIC 专业实验
指导老师:刘雯
#common_setup.tcl
set TARGET_LIBRARY_FILES “/home1/lib/smic/aci/sc-x/synopsys/typical_1v2c25.db /home1/lib/smic/SP013D3_V1p4/syn/SP013D3_V1p2_typ.db”;
.out(n1[6]),
.clk(clk),
.sel(load)
.rst_(rst_)
);
);
mux m4 ( .a(out[4]), .b(data[4]), .out(n1[4]), .sel(load) ); dffr d4 ( .d(n1[4]), .q(out[4]), .clk(clk), .rst_(rst_) );
2.逻辑综合
1.综合是在做什么? i. 综合的对象:控制器 control.v ii. 本实验综合采用的工具:SYNOPSYS 公司的 Design Compiler iii. 库是什么:EDA 工具能够完成各种自动化设计,关键是各种库的支持。如逻辑模拟时的
模拟库,逻辑综合时综合库,版图综合时的版图库,测试综合时的测试库等。这些库都 是 EDA 设计公司与半导体生成厂家紧密合作,共同开发。 iv. 逻辑综合的目标: 将前面的 RTL 级 HDL 代码映射到具体的工艺加以实现,对层次化的时序电路的速度、 面积、功耗和可布性进行优化因而从这一步开始,设计过程与工艺实现联。 逻辑综合的前提是有逻辑综合库的支持,综合库内部包含有相应的工艺参数,如门级延 时,单元面积,扇入扇出系数等。设计一电子系统,总有相应的设计指标,如时钟频率,芯 片面积和端口驱动能力等,自动综合工具将这些设计指标作为综合过程的约束条件,在给定 的综合库中选取最佳单元,实现综合。对与复杂的电子系统,需要考率测试问题,可通过测 试综合工具在逻辑电路内部安排相应的测试电路。 v. 具体用了什么工艺库: DC 使 用 .synopsys_dc.setup 来 启 动 文 件 , .synopsys_dc.setup 运 行 时 调 用 了 common_setup.tcl , dc_setup.tcl,这两个脚本文件设置了综合单元库和符号库。
指导老师:刘雯
.rst_(rst_) );
mux m0 ( .a(out[0]), .b(data[0]), .out(n1[0]), .sel(load) ); dffr d0 ( .d(n1[0]), .q(out[0]), .clk(clk), .rst_(rst_) );
register-test.v
(
mux m5
.d(n1[7]),
(
.q(out[7]),
.a(out[5]),
.clk(clk),
.b(data[5]),
.rst_(rst_)
.out(n1[5]),
);
.sel(load)
);
mux m6
dffr d5
(
(
.a(out[6]),
.d(n1[5]),
.b(data[6]),
.q(out[5]),
相关文档
最新文档