问题标签 [ghdl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - 为什么 Windows 上的 llvm-config 不为 clang++.exe 发出正确的参数?
我不是经验丰富的 LLVM 用户,但我正在尝试在 Windows 上编译 Linux LLVM 项目。该项目是GHDL。
因为没有llvm-config
捆绑适用于 Windows 的即用型 LLVM 安装程序,所以我需要从源代码编译 LLVM 和 clange。该项目需要 LLVM 3.5。
所以首先,我下载llvm-3.5.2
并clang-3.5.2
使用 CMake 将其转换为 Visual Studio 2013 项目。然后我用VS2013编译它。
原始 makefile 调用llvm-config
. 结果字符串被传递给clang++
:
我正在使用 PowerShell 调用llvm-config
并将结果存储在一个变量中:
结果是:
我注意到几个问题:
- 有些路径有
/
而不是\
-IC:\Tools\LLVM-3.5/include
- 一些开关和参数与
-
其他开关和参数一起使用/
... -IC:\Tools\LLVM-3.5/include /DWIN32 /D_WINDOWS ...
- 一些参数由一个以上的空格符号分隔
... /W3 /MP ...
- clang++.exe 在未知参数上打印错误:
clang++.exe:错误:未知参数:'-wd4146'
clang++.exe:错误:未知参数:'-wd4180'
clang++.exe:错误:未知参数:'-wd4244'
clang++.exe:错误:未知参数:'- wd4267'
clang++.exe:错误:未知参数:'-wd4291'
clang++.exe:错误:未知参数:'-wd4345'
clang++.exe:错误:未知参数:'-wd4351'
clang++.exe:错误:未知参数: “-wd4355”
clang++.exe:错误:未知参数:“-wd4503”
clang++.exe:错误:未知参数:“-wd4624”
clang++.exe:错误:未知参数:“-wd4722”
clang++.exe:错误:未知参数:'-wd4800'
clang++.exe:错误:未知参数:'-w14062'
clang++.exe:错误:未知参数:'-we4238'
结果现在包含在 clang++.exe 调用中,这会导致错误。
所以这是我的问题:
- 为什么
llvm-config
在 Windows 上会发出错误的结果? - 我该如何解决?
- 这些
-wd***
开关是干什么用的?
unit-testing - 为 VHDL 设计运行多个测试平台
每当我创建 VHDL 设计时,我倾向于拥有许多模块。然后这些模块中的每一个都连接到一个主文件,因此所有内容都被合成。但是我想为这些模块中的每一个编写单独的测试台,并为全局流程编写一个。如果我能做一些事情将所有这些测试平台链接在一起并让它们连续运行,从而一次测试我的整个设计,那就太好了。我怎么能这样做?我喜欢使用 GHDL 和断言。是否可以创建一个超级测试平台?或者迭代它们的shell脚本会更好吗?
vhdl - vhdl 程序不交换整数
下面的 VHDL 代码是一个简单的交换程序。但它不会交换输入a
和b
. 我在评论中给出了成绩单值。
声明中有一些东西起作用a<=b
,但我不知道是什么阻止了它自己分配它。
simulation - 运行仿真时 GHDL --workdir 选项不起作用
我目前正在花一些时间来熟悉 GHDL,但遇到了一个我无法解决的问题。我为模拟创建的文件夹结构如下:
文件夹中run
有一个脚本,它调用 GHDL 来分析、详细说明和运行我的设计。现在我想将 GHDL 创建的所有文件放入文件夹/ghdl/out
中。为此,我--workdir=../out
在调用 GHDL 时指定该选项。
这是我在里面的文件中的脚本/ghdl/run
:
(细化阶段工作正常,因此我不包括有关 RTL 和测试台文件的任何细节)。
运行模拟脚本时,我收到以下错误消息:
我检查过,可执行文件test_module_tb
实际上存在于文件夹中/ghdl/out
。
我是否--workdir
错误地使用了该选项?如果仿真可执行文件位于不同的目录中,使用 GHDL 的正确方法是什么?
PS:我正在使用 Fedora 23 RPM 存储库中的 GHDL 0.34dev (20151126)。
vhdl - 信号下降到未定义,而所有相关信号都已定义
我正在编写一个必须查找每个传入位的过程,跟踪接收到的总数量是否为 1,并且到时候必须将值与参考值进行比较。过程如下:
在这里我遇到了一个问题:定义了过程敏感度列表中定义的所有信号,但是根据 GHDL(模拟器),只要 parity_test 变为 true,值就会变为 undefined: 我做错了什么?
我删除了这里的内容,因为当我换成笔记本电脑时,错误发生了变化:它与机箱开关有关。我仍然不明白为什么。parity_bit_in_type 是具有范围(0 到 3)的通用 Natural。如果我取出我需要的语句(在这种情况下为 0)并删除 case thingy,一切都会按预期工作。WebPack ISE 似乎没有抱怨它,所以它开始感觉像是 GHDL 中的一个错误。
GHDL 版本控制:
显示相同行为的最小示例
vhdl - 测试台中的输入分配和输出值(ghdl 和 gtkwave)
我直接说具体的。
我正在使用 Ubuntu 14.04LTS、GHDL 编译器和 GTKWave 进行仿真。
我有两个文件用于模拟简单的 2 多路复用器:mux2.vhd 和 mux2_testbench.vhd
这是 mux2.vhd 的代码
测试台代码
我正在做的事情:
我通过终端编译没有错误: ghdl -a mux2.vhd和ghdl -a mux2_testbench.vhd
然后,我为测试平台创建可执行文件: ghdl -e mux2_testbench
最后,我创建了我需要使用 gtkwave 的 vcd 文件: ghdl -r mux2_testbench --vcd=test.vcd &
模拟: gtkwave test.vcd
这段代码有两个问题: 1. 即使我在信号 e0 和 e1 中写入不同的值,e1 在模拟中也没有显示任何内容。它始终为“0”。
- 输出信号在模拟中显示值“U”,我什至不确定这意味着什么,也无法在 Google 中找到任何明确的信息。
提前谢谢大家,伙计们。
vhdl - 如何在 VHDL 中将整数作为十六进制写入标准输出?
我可以使用以下integer
命令将十进制打印到标准输出:
输出:
但是如何输出:
vhdl - 使用 GHDL 模拟器模拟测试台时出现“组件实例“uut”未绑定”
我在使用 GHDL(http://ghdl.readthedocs.io/en/latest/)来模拟我的 VHDL 设计时遇到问题。因此,当我使用该命令ghdl -e Averager_tb
使用 GHDL 编译测试台时,我收到警告:
要编译测试台以进行仿真,我使用以下命令:
而且我的设计的输出在整个测试台中保持不变,我还发现设计中的打印语句没有执行。
要执行编译的测试台模拟,我使用以下命令:
但是,当我使用 Aldec Riviera Pro 2015.06 模拟器在http://www.edaplayground.com上模拟相同的测试台时,我发现设计中的打印语句已执行,并且输出按我的预期发生变化。
为什么会这样,我该如何解决?
这是我设计中的实体声明
下面是测试台:
vhdl - 实际必须是静态名称——端口映射中的索引向量
我认为这个错误是 GHDL 不支持 VHDL 2008 的结果。当 ff0 D 被分配来自向量 din 的值时,错误发生在第 27/28 行。从端口映射中索引向量的正确方法是什么?
我创建了 count_temp 来尝试绕过错误,但它没有帮助,我宁愿没有额外的变量。谢谢。
错误:
vhdl - 使用 gcov (Ubuntu 16.04 LTS) 的 GHDL + 代码覆盖率
此页面(来自 Arnim Läuger,2005 年)解释说工具链 {GHDL + gcov} 可以执行 VHDL 代码覆盖。
问题:它是否仍然适用于最新版本的 GCC、GCOV 和 GHDL?
以下命令失败
我的设置如下:
我使用Building with mcode 后端程序安装了 GHDL。莫非是万恶之源?
感谢帮助!