英文:
What is the basis for setting parameter values in the sdc file?
问题
最近,我做了一些RTL练习,比如除法器和序列检测器。我使用了同一个来自开源项目的sdc文件进行综合。以下代码来自于该开源项目中使用的sdc文件,也用于我的练习。
# 操作条件和边界条件 #
create_clock -name clk -period 30.0 [get_ports clk]
set_dont_touch_network [all_clocks]
set_fix_hold [all_clocks]
set_clock_uncertainty 0.1 [all_clocks]
set_clock_latency 0.5 [all_clocks]
set_ideal_network [get_ports clk]
# 不要修改以下基本环境设置
set_input_delay 5.0 -clock clk [remove_from_collection [all_inputs] [get_ports clk]]
set_output_delay 0.5 -clock clk [all_outputs]
set_load 1 [all_outputs]
set_drive 1 [all_inputs]
set_operating_conditions -max_library slow -max slow
set_wire_load_model -name tsmc13_wl10 -library slow
set_max_fanout 20 [all_inputs]
由于我从未参与过完整的IC设计或ASIC设计,所以我真的不知道这些约束值是从哪里来的。
具体来说,时钟的不确定性和延迟属性,如何确定其值?有人告诉你这个值,还是你需要自己努力获取这个值?关于负载、驱动和扇出的问题也是一样的。
英文:
Recently, I did some rtl practice like divider and sequence detector. I used the same sdc file to synthesis and it comes from an open source project.(Project link) The following codes come from the sdc file using in the open source project and also used in my practice.
# operating conditions and boundary conditions #
create_clock -name clk -period 30.0 [get_ports clk]
set_dont_touch_network [all_clocks]
set_fix_hold [all_clocks]
set_clock_uncertainty 0.1 [all_clocks]
set_clock_latency 0.5 [all_clocks]
set_ideal_network [get_ports clk]
#Don't touch the basic env setting as below
set_input_delay 5.0 -clock clk [remove_from_collection [all_inputs] [get_ports clk]]
set_output_delay 0.5 -clock clk [all_outputs]
set_load 1 [all_outputs]
set_drive 1 [all_inputs]
set_operating_conditions -max_library slow -max slow
set_wire_load_model -name tsmc13_wl10 -library slow
set_max_fanout 20 [all_inputs]
Since I never take part in a complete IC design or ASIC design, so I really don't know where these constraint values come from.
To be specific, the property of clock like uncertainty and latency, how to decide its value? Did someone tell you its value or you should make some effort to get the value by yourself? Same question about the load, drive and fanout.
答案1
得分: 0
这里列出的一些约束值取决于承载物理可编程逻辑(ASIC、FPGA等)设备的物理硬件(电路板及其组件)。RTL编码人员与硬件工程师或其他熟悉与可编程逻辑设备物理连接的工程角色合作,以确定正确的约束值。
set_clock_uncertainty 取决于与产生时钟的振荡器(一种电路板组件)相关的抖动。电路板硬件工程师会了解有关振荡器的信息。有关振荡器的原始信息将来自其数据手册。
set_clock_latency 取决于建立振荡器输出引脚与可编程逻辑输入引脚之间延迟的电路板和线路。电路板硬件工程师会了解延迟的信息。延迟信息将来自对电路板布局进行的分析。
set_load和set_drive 定义了可编程逻辑输出引脚的特性。这些特性取决于连接到可编程逻辑设备输出引脚的内容。例如,连接的LED需要更强的驱动强度(电流),并且具有比位于电路板上可编程逻辑附近的其他集成电路芯片(例如DRAM芯片)的单个引脚更大的负载(电容)。电路板硬件工程师会了解输出引脚的负载和驱动信息。这些信息将源自连接到所关注的输出引脚的组件的数据手册。
set_max_fanout 这个约束取决于物理可编程逻辑设备本身,并且对于特定的可编程逻辑设备技术,可能有一个默认值或范围。其值取决于设备的晶体管级别和布局设计选择。请查阅设备文档或特定设备物理设计的专家,以确定其值。增加或减小该值将导致可编程逻辑设备的性能、功耗和面积之间的权衡。似乎这也可以应用于输出引脚的扇出(为什么不呢;也许其他约束涵盖了输出引脚?),我只见过它在可编程逻辑设备内部使用。
英文:
Several of these constraint values listed depend on the physical hardware (the board and its components) which hosts the physical programmable logic (ASIC, FPGA, etc) device. RTL coders work with hardware engineers or other engineering rolls who are more familiar with what is physically connected to the programmable logic device in order to determine the correct constraint value.
set_clock_uncertainty depends on the jitter associated with the oscillator (a board component) which creates the clock. The board hardware engineer would have info on the oscillator. The original info on he oscillator would come from its data sheet.
set_clock_latency depends on the board and traces which establish the delay between the oscillator output pin, and the programmable logic input pin. The board hardware engineer would have info on the delay. The delay information would come from an analysis performed on the board layout.
set_load and set_drive defines the programmable logic output pin characteristics. These depend on what is connected to the programmable logic device output pin. For example a connected LED would require stronger drive strength (current), and have a larger load (capacitance) than a single pin of another integrated circuit chip (example a DRAM chip) located near the programmable logic on the board. The board hardware engineer would have info on the output pin loading & drive. This information would originate in the data sheet for whatever component is connected to the output pin of interest.
set_max_fanout This constraint depends on the physical programmable logic device itself, and would have a default or range for a particular programmable logic device technology. Its value depends on transistor level and layout design choices for the device. Consult the devices documentation or a subject matter expert on the particular device's physical design to determine its value. Increasing or decreasing the value would lead to trade-offs in performance, power, and area for the programmable logic device. It seems like this could also be applied to output pin fanout (why not; perhaps other constraints cover output pins?), I have only seen it used internally to the programmable logic device.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论