Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Synthesis 用Vivado和x27合成SystemC;不能给出所需的VHDL信号_Synthesis_Systemc_Vivado_Register Transfer Level - Fatal编程技术网

Synthesis 用Vivado和x27合成SystemC;不能给出所需的VHDL信号

Synthesis 用Vivado和x27合成SystemC;不能给出所需的VHDL信号,synthesis,systemc,vivado,register-transfer-level,Synthesis,Systemc,Vivado,Register Transfer Level,我正在写一个名为systemC的项目,我有两个sc_-in和sc_-out模块之间进行通信。当我综合该项目时,在vhdl代码中,每个sc_in和sc_out生成的信号块如下所示: valid_in_address0 : OUT STD_LOGIC_VECTOR (2 downto 0); valid_in_ce0 : OUT STD_LOGIC; valid_in_we0 : OUT STD_LOGIC; valid_in_d0 : OUT STD_LOGIC_VECTOR (0 downto

我正在写一个名为systemC的项目,我有两个
sc_-in
sc_-out
模块之间进行通信。当我综合该项目时,在vhdl代码中,每个
sc_in
sc_out
生成的信号块如下所示:

valid_in_address0 : OUT STD_LOGIC_VECTOR (2 downto 0);
valid_in_ce0 : OUT STD_LOGIC;
valid_in_we0 : OUT STD_LOGIC;
valid_in_d0 : OUT STD_LOGIC_VECTOR (0 downto 0);
valid_in_q0 : IN STD_LOGIC_VECTOR (0 downto 0);
valid_in_address1 : OUT STD_LOGIC_VECTOR (2 downto 0);
valid_in_ce1 : OUT STD_LOGIC;
valid_in_we1 : OUT STD_LOGIC;
valid_in_d1 : OUT STD_LOGIC_VECTOR (0 downto 0);
valid_in_q1 : IN STD_LOGIC_VECTOR (0 downto 0);
valid_in : IN STD_LOGIC
sc_bit asdf = 0;
sc_bit asdf = '0';
这对于我的硬件设计来说太复杂了,因为我只想声明1个信号,如下所示:

valid_in_address0 : OUT STD_LOGIC_VECTOR (2 downto 0);
valid_in_ce0 : OUT STD_LOGIC;
valid_in_we0 : OUT STD_LOGIC;
valid_in_d0 : OUT STD_LOGIC_VECTOR (0 downto 0);
valid_in_q0 : IN STD_LOGIC_VECTOR (0 downto 0);
valid_in_address1 : OUT STD_LOGIC_VECTOR (2 downto 0);
valid_in_ce1 : OUT STD_LOGIC;
valid_in_we1 : OUT STD_LOGIC;
valid_in_d1 : OUT STD_LOGIC_VECTOR (0 downto 0);
valid_in_q1 : IN STD_LOGIC_VECTOR (0 downto 0);
valid_in : IN STD_LOGIC
sc_bit asdf = 0;
sc_bit asdf = '0';
将变量声明为
sc_位
,我对生成的VHDL没有问题,但在我尝试在信号中使用
sc_in
而不是
sc_in
来在模块之间进行通信后,项目不再编译。如果我这样赋值:

valid_in_address0 : OUT STD_LOGIC_VECTOR (2 downto 0);
valid_in_ce0 : OUT STD_LOGIC;
valid_in_we0 : OUT STD_LOGIC;
valid_in_d0 : OUT STD_LOGIC_VECTOR (0 downto 0);
valid_in_q0 : IN STD_LOGIC_VECTOR (0 downto 0);
valid_in_address1 : OUT STD_LOGIC_VECTOR (2 downto 0);
valid_in_ce1 : OUT STD_LOGIC;
valid_in_we1 : OUT STD_LOGIC;
valid_in_d1 : OUT STD_LOGIC_VECTOR (0 downto 0);
valid_in_q1 : IN STD_LOGIC_VECTOR (0 downto 0);
valid_in : IN STD_LOGIC
sc_bit asdf = 0;
sc_bit asdf = '0';
我得到以下信息:

../../../source.cpp:67:16:错误:从“int”转换为 已请求非标量类型“sc_dt::sc_位”

如果我这样赋值:

valid_in_address0 : OUT STD_LOGIC_VECTOR (2 downto 0);
valid_in_ce0 : OUT STD_LOGIC;
valid_in_we0 : OUT STD_LOGIC;
valid_in_d0 : OUT STD_LOGIC_VECTOR (0 downto 0);
valid_in_q0 : IN STD_LOGIC_VECTOR (0 downto 0);
valid_in_address1 : OUT STD_LOGIC_VECTOR (2 downto 0);
valid_in_ce1 : OUT STD_LOGIC;
valid_in_we1 : OUT STD_LOGIC;
valid_in_d1 : OUT STD_LOGIC_VECTOR (0 downto 0);
valid_in_q1 : IN STD_LOGIC_VECTOR (0 downto 0);
valid_in : IN STD_LOGIC
sc_bit asdf = 0;
sc_bit asdf = '0';
我得到以下信息:

../../../source.cpp:68:14:错误:中的“operator=”不匹配 “((source*)this)->source::asdf='0”

有没有其他方法可以在SystemC中声明I/O信号,以便在合成后,VHDL中只有1
std_逻辑
信号

测试台中源代码的
SC_模块
如下所示

头文件:

# ifndef SOURCE_H  
# define SOURCE_H  
# include "systemc.h"

using namespace std;

SC_MODULE(source) {    
    sc_in_clk clk;       
    sc_out<sc_bit > valid_out;           
    void do_cycle();       

    SC_CTOR(source) {        
    {       
        //irrelevant initializations
    }            

    SC_THREAD(do_cycle) {
        //i know sc_thread is unsynthesizable but source is testbench     
        //and i need the signal to be sc_out<sc_bit> to give it as            
        //input in my top function to be synthesized              
    }      
};          
#endif //SOURCE_H       

这是一个内存类型的接口……你能分享你的SC_模块吗?@如果我知道它是一个内存类型的接口,但我不希望它是那样的。@vermaete如果你需要任何其他信息,请毫不犹豫地问meSorry没有Vivados C到Vhdl的经验。仅使用cadences选项,您必须明确指出什么时候是记忆。当然有一些简单的例子,你可以从这个工具开始。。。