在实施HDL代码时应该遵循哪些最佳实践?
与更常见的软件开发领域相比,有哪些共性和差异?
当一个RTL
块包含对同一个寄存器的多个赋值时,我无法理解Kansas Lava的行为.这是版本号1:
foo :: (Clock c) => Signal clk Bool
foo = runRTL $ do
r <- newReg True
r := low
return $ var r
Run Code Online (Sandbox Code Playgroud)
这表现得像我预期的那样:
*Main> takeS 10 foo :: Seq Bool
low | low | low | low | low | low | low | low | low | low | ? .
Run Code Online (Sandbox Code Playgroud)
生成的VHDL
是:
architecture str of assignments is
signal sig_2_o0 : std_logic;
begin
sig_2_o0 <= '0';
OUTPUT <= sig_2_o0;
end architecture str; …
Run Code Online (Sandbox Code Playgroud) 我正在使用命令行参数为大多数QuestaSim/ModelSim可执行文件-modelsimini <modelsim.ini>
指定我自己的modelsim.ini
文件.
这适用于Linux for vcom
和Windows vsim
,以及适用vcom
于Windows.但Windows vsim
中止并抛出错误:
C:\Mentor\QuestaSim64\10.4c\win64\vsim.exe -do "do D:/git/PoC/sim/vSim.batch.tcl" -c -modelsimini D:\git\PoC\temp\precompiled\vsim\modelsim.ini -error 3473 -t 1fs test.arith_prng_tb
Reading C:/Mentor/QuestaSim64/10.4c/tcl/vsim/pref.tcl
# 10.4c
# ** Error: (vsim-7) Failed to open -modelsimini file "{D:\git\PoC\temp\precompiled\vsim\modelsim.ini}" in read mode.
#
# Invalid argument. (errno = EINVAL)
# Error loading design
Error loading design
# Errors: 1, Warnings: 0
Run Code Online (Sandbox Code Playgroud)
这些modelsim.ini
文件存在并具有以下内容:
[Library]
others = $MODEL_TECH/../modelsim.ini
Run Code Online (Sandbox Code Playgroud)
(如果供应商工具添加其库映射,则此文件将包含更多行.)
如何将自己的modelsim.ini
配置文件传递给vsim.exe
?
我一直在阅读关于VHDL编程的文本(不要在前面,所以不能给出标题).我从文本中很难理解的一个问题是何时使用变量与信号.我想我已经清楚地了解何时使用信号(内部信号),而不是变量.
我注意到文本通常在定义一个进程之前声明并初始化信号,而一个变量在一个进程内被声明(我猜它从未初始化..).
无论如何要清除它,无论是定义还是示例都会很棒!
我在网上看过,讨论/例子似乎是传统的软件开发.由于Verilog和VHDL(用于芯片设计,例如FPGA和ASIC)类似于软件开发C和C++,因此它似乎是有意义的.但是,它们之间存在一些差异,这些差异基本上是并行的,需要硬件才能进
你有什么经历,无论好坏?您可以在此特定应用程序上建议的任何链接?
编辑/澄清:2009年10月28日:我特别询问TDD.我熟悉测试台,包括自检台.我也知道SystemVerilog具有测试平台的一些特殊功能.
10/28/09:隐含的问题包括:1)为任何功能编写测试,从不使用波形进行模拟,2)首先编写测试/测试平台.
11/29/09:在实证研究中显示测试驱动开发提高了他们为(软件)TDD报告的质量 "四种产品的预发布缺陷密度,以每千行代码的缺陷来衡量,在40%到90%之间下降相对于未使用TDD的项目.团队管理层主动报告使用TDD的团队的初始开发时间增加了15-35%,尽管团队同意这可以通过降低维护成本来抵消.减少的错误降低了流片带来的风险,但却以适度的时间表影响为代价. 这也有一些数据.
11/29/09:我主要做控制和数据路径代码,而不是DSP代码.对于DSP,典型的解决方案涉及Matlab位精确仿真.
03/02/10:TDD的优势在于确保测试首先失败.我想这也可以用断言来完成.
我想学习VHDL,但我真的不知道从哪里开始.
我想要一些关于我开始使用的软件的建议和解释.
我还想获得一些参考资料,以便有效地学习它而不用浪费时间在互联网上搜索,因为有很多电子书和教程,我真的很困惑选择哪一个.
使用VHDL或Verilog进行硬件设计更像是现在的编程.但是,我看到SO成员并没有那么积极地谈论VHDL/Verilog编程.
有没有关于使用Verilog/VHDL/SystemVerilog或SystemC处理硬件设计的论坛?
当架构中声明的信号必须插入到进程的敏感列表中时,我感到很困惑.
在任何情况下都可以遵循一般法律吗?
当我必须在过程灵敏度列表中包含信号时,我真的很难理解.