Posts

Showing posts from November, 2021

About me

 目前就读于:日本電気通信大学、情報ネットワーク工学 M2。  目前的课题是CNFET和Computer Architecture。  最近做的研究是CNFET的逻辑综合(Logic Synthesis)和布局布线(Place and Route)。  可能会在2022年4月开始做关于Cache、Memory的研究。  闲暇时间会争取学习有关Computer Architecture、Verilog的书,并更新博客。

Python Q&A

 学习python的人请畅所欲言,知无不答。

Digital Circuit 基础知识

Image
很久没有捡起数字电路了,从今天开始认真好好复习一下。 本文内容均总结与《Verilog HDL高级数字设计》 1. Basic Knowledge    1.1 Harzard       1.1.1 Static harzard     逻辑表达式形如:f=ac'+bc会引发static harzard,简单理解:     c经过非门时会有一定的延迟,所以在比如A=1,B=1时,C从1切换至0,由于延迟,ac'从0变成1的时间会滞后,所以会有一小短时间ac'=0,而bc同样等于0,所以此时逻辑电路的结果会短暂为0。     若表达式为长且复杂,则用K-map去看各表达式元素之间是否有接触,或者说是否有相邻的表达式,若有则会发生static harzard。     解决方法:将边缘覆盖,添加多余项,覆盖掉接触边缘。      1.1.2 1-harzard 和 0-harzard      前者为保持输出结果为1时突然有一小段时间跳变至0,后者正好相反。       解决0、1-harzard的方法:先解决其中一个,再用反表达式f’的K-map去执行1.1、1.2中提到的方法。    1.2 dynamic harzard     dynamic harzard 可以简单理解为不止一次跳变的static harzard。     解决方法:将多级逻辑电路分解,消除每级的static harzard。 若电路中不存在static harzard,则电路中将没有dynamic harzard。    1.3 NAND NOR    在实际化简逻辑表达式中,运用NAND和NOR门能够将很复杂的乘法表达式化为几乎纯加法的表达式。    例如:                f=D(B+C)(A+E+F')(A+G)                               =(D'+(B+C)'+(A+E+F')'+(A+G)')'   原本表达式需要3个OR和一个AND,而新表达式并不需要使用AND,四个NOR和一个非门即可解决问题。   1.4  Multiplexers     Multiplexers(多路复用),一般可认为拥有多路输入,单路输出。     Demultiplexer

Design Compiler and TCL language based on Linux Terminal

Terminal command: dc_shell -f compile.tcl  TCL  file Example: set design_name example set log_path "/home/usr/design/log/" set link_library "* /home/usr/Tmp/example.db" set target_library "/home/usr/Tmp/example.db" set wire_library_file  {/home/usr/Tmp/example.db} set wire_library example lappend search_path "../../Src/" # Working directory define_design_lib WORK -path "./work" analyze -format sverilog  example.sv elaborate example  -work WORK current_design $design_name #clock=1/period(ps) create_clock -period 2000 clk set_max_area 0 #timing setting set max_transition   7.275162324 set default_input_delay  7.275162324 set default_output_delay 9.700216431 set critical_range      14.55032465 set wire_model_name      05x05 set wireload_mode      top set symbol_library {} set dont_use_cells 0 compile -ungroup_all redirect [format $log_path/power.rep] { report_power } # write -f ddc -o read.ddc -hier $design_name link exit