Jump to content

Search the Community

Showing results for tags 'SystemC'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Accellera Systems Initiative
    • Information
    • Announcements
    • In the News
  • SystemC
    • SystemC Language
    • SystemC AMS (Analog/Mixed-Signal)
    • SystemC TLM (Transaction-level Modeling)
    • SystemC Verification (UVM-SystemC, SCV)
    • SystemC CCI (Configuration, Control & Inspection)
    • SystemC Datatypes
  • UVM (Universal Verification Methodology)
    • UVM 2017 - Methodology and BCL Forum
    • UVM SystemVerilog Discussions
    • UVM Simulator Specific Issues
    • UVM Commercial Announcements
    • UVM (Pre-IEEE) Methodology and BCL Forum
    • UVM 1.2 Public Review
  • Portable Stimulus
    • Portable Stimulus Pre-Release Discussion
    • Portable Stimulus 1.0
  • IP Security
    • IP Security Assurance Whitepaper Discussion
  • IP-XACT
    • IP-XACT Discussion
  • IEEE 1735/IP Encryption
    • IEEE 1735/IP Encryption Discussion
  • OCP (Open Core Protocol)
  • UCIS (Unified Coverage Interoperability Standard)
  • Commercial Announcements
    • Announcements

Categories

  • SystemC
  • UVM
  • UCIS
  • IEEE 1735/IP Encryption

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests


Biography


Location


Interests


Occupation


Company

Found 140 results

  1. I am trying to code a very generic module that takes the number of elements of a sc_vector of sc_in from an argument. This module looks like: transformation_arbiter.h using namespace sc_core; using namespace sc_dt; class transformation_arbiter : public sc_module { public: sc_in<bool> clk; sc_vector< sc_in<bool> > enable_in; . . . private: unsigned pre_rep; public: SC_HAS_PROCESS( transformation_arbiter ); transformation_arbiter( sc_module_name trans_arbiter, unsigned ext_pre_rep ): sc_module( trans_arbiter ), pre_rep( ext_pre_rep ), enable_in( "enable_in" ) { SC_THREAD( arbitrate ); sensitive << clk; } void arbitrate() { enable_in.init( pre_rep ); . . . } Then I am instantiating this module, along with a sc_vector of another module (request_generator.cpp) in a top module (top.cpp): request_generator.h . . . using namespace sc_core; using namespace sc_dt; class req_generator : public sc_module { public: //ports: sc_in_clk clk; sc_out<bool> enable_out; . . . top.h #include "trans_arbiter.h" #include "request_generator.h" . . . sc_signal<bool> signal[4]; sc_vector<req_generator> req_gen; transformation_arbiter trans_1_arb; . . . and top.cpp #include top.h top::top(sc_module_name sys_m): sc_module(top_m), trans_1_arb ( "trans_1_arb", 4 ), req_gen( "req_gen", 4) { . . . for ( auto i = 0; i < REQ_MODULES; ++i ) { trans_1_arb.enable_in[i].bind ( signal[i] ); } . . . } The problem is that this causes a segmentation fault in the bind instruction: Program received signal SIGSEGV, Segmentation fault. 0x0000000000412501 in sc_core::sc_vector<sc_core::sc_in<bool> >::operator[] (this=0x7fffffffcec0, i=0) at ./systemc-2.3.1/include/sysc/utils/sc_vector.h:384 384 { return *static_cast<element_type*>( base_type::at(i) ); } If I don't use de delayed initialization of the sc_vector like this: public: SC_HAS_PROCESS( transformation_arbiter ); transformation_arbiter( sc_module_name trans_arbiter ): sc_module( trans_arbiter ), enable_in( "enable_in", 4) { SC_THREAD( arbitrate ); sensitive << clk; } void arbitrate() { . . . } The code works, but then it is not generic anymore, since several instances of the module could have different number of ports, and not always 4. I'd really appreciate any help on this issue. Thanks, Fernando
  2. Hi, I have some situations in my models where I have to write a signal from different drivers. To avoid 'multiple drivers to a signal' error I add SC_MANY_WRITERS flag. Is there any way to allow multiple driers to a signal other than putting above flag? I know about sc_resolved but it works only for sc_logic. whenever i regenerate netlist using tool I had to add the flag manually as the tool doesn't have any way to know its a signal with multiple writers.
  3. I didn't find an efficient bug report entrance so I decided to post it here to see whether people think this is a bug or not. I'm trying to use Ralph's solution to reset the sim context (see http://forums.accellera.org/topic/2273-problem-with-re-instatiation-of-modules/). However, that only works well with those modules that don't have a reset signal. I spent some time debugging this with reset signal and found that: This method, sc_reset::reconcile_resets() at src/sysc/kernelsc_reset.cpp:160, is supposed to iterate over all things in reset_finder_q, a static linked list of sc_reset_finder, and delete sc_reset_finder one by one (see line 168-170 for the nature of a linked list, line 195 for delete). Here comes the bug: after the loop, it should but it forgot to set reset_finder_q to NULL! If reset_finder_q is not NULL when I reset the sim context, the next reset signal at line 97 will append itself to a non-existing queue node, which makes the next reconcile_reset cast seg fault. I could see that it's indeed undefined behavior to reset the sim context, but in general it is not a good idea to forget to reset some pointer. Thanks, Shunning
  4. I am a bit confused about the correct usage of the SC_REPORT_* macros. In "sysc/kernel/sc_simcontext.cpp" we have: SC_REPORT_INFO("/OSCI/SystemC","Simulation stopped by user."); The above is helpful as it produces easily parseable output. Whereas in "sysc/kernel/sc_object_manager.cpp" we have: std::string message = result_orig_string; message += ". Latter declaration will be renamed to "; message += result_string; SC_REPORT_WARNING( SC_ID_INSTANCE_EXISTS_, message.c_str()); This is not so helpful, since it is not clear where the error comes from when analysing output. A quick grep showed that there are a lot of instances where the first argument to a SC_REPORT_* macro is some ID and not the source of the error. Those IDs are resolved to error message strings, which in my opinion should go into the second argument. Could someone please clarify which way is correct? I would like to be able to handle the sc_report messages with our own message handler.
  5. I'm trying to run uvm-systemc on macosx. Link to download: http://accellera.org/images/downloads/drafts-review/uvm-systemc-1.0-alpha1.tar.gz In the install flow, ../configure works fine, but on make i get this error: Making all in macros CCLD libmacros.laar: no archive members specifiedusage: ar -d [-TLsv] archive file ... ar -m [-TLsv] archive file ... ar -m [-abiTLsv] position archive file ... ar -p [-TLsv] archive [file ...] ar -q [-cTLsv] archive file ... ar -r [-cuTLsv] archive file ... ar -r [-abciuTLsv] position archive file ... ar -t [-TLsv] archive [file ...] ar -x [-ouTLsv] archive [file ...]make[4]: *** [libmacros.la] Error 1make[3]: *** [all-recursive] Error 1make[2]: *** [all-recursive] Error 1make[1]: *** [all] Error 2make: *** [all-recursive] Error 1 I've looked online, and it seems that it is a makefile problem. However the uvm-systemc makefile is way to complex for me to comprehend where the issue could reside. Any ideas on why is this happening? Thanks
  6. I am writing I2C model (as per my requirement) which include master.cpp and slave.cpp. There are 2 signals: SDA and SCL, both are type of sc_inout_resolved in both the files. Connection and Port binding is done perfectly in test bench as well. I am controlling SDA & SCL in file called master.cpp. While transferring ack from slave to master, SDA will be controlled by slave.cpp (writes SDA 0). After this again master.cpp should control the SDA line for further transactions. But once controlling on SDA switches to slave.cpp, unable to control SDA again from master.cpp. Writing values(0,1) on SDA is not making any difference. I confirmed this issue using gtkwave. Am I missing anything here? Can anyone tell how to handle sc_inout_resolved between 2 models?.
  7. I am writing I2C model (as per my requirement) which include master.cpp and slave.cpp. There are 2 signals: SDA and SCL, both are type of sc_inout_resolved in both the files. Connection and Port binding is done perfectly in test bench as well. I am controlling SDA & SCL in file called master.cpp. While transferring ack from slave to master, SDA will be controlled by slave.cpp (writes SDA 0). After this again master.cpp should control the SDA line for further transactions. But once controlling on SDA switches to slave.cpp, unable to control SDA again from master.cpp. Writing values(0,1) on SDA is not making any difference. I confirmed this issue using gtkwave. Am I missing anything here? Can anyone tell how to handle sc_inout_resolved between 2 models?.
  8. Hello all, I am finding that SystemC 2.2 cannot harmoniously compile with boost 1.58 when -DSC_INCLUDE_DYNAMIC_PROCESSES is defined. It creates a condition where SystemC's embedded boost declarations are previously defined in the real boost. Is there any workaround for this without completely hacking SystemC's boost sources to properly embed boost in "sc_boost" namespace instead of it colliding with the boost namespace from a different release? Details of an example error: In file included from /tmp/systemc/include/sysc/kernel/sc_boost.h:58:0, from /tmp/systemc/include/sysc/kernel/sc_dynamic_processes.h:54, from /tmp/systemc/include/systemc:94, from ExampleX.h:32, from Example.h:32, from Example.cpp:25 /tmp/systemc/include/sysc/packages/boost/ref.hpp:31:25: error: redefinition of 'class boost::reference_wrapper<Type>' In file included from /tmp/boost/1.58.0/boost/ref.hpp:15:0, from /tmp/boost/1.58.0/boost/tuple/tuple.hpp:27, from /tmp/boost/1.58.0/boost/multi_index/detail/index_base.hpp:28, from /tmp/boost/1.58.0/boost/multi_index/detail/base_type.hpp:21, from /tmp/boost/1.58.0/boost/multi_index_container.hpp:34, from ExampleY.h:24, from Example.h:27, from Example.cpp:25: PS. We aren't able to move to SystemC 2.3, but would like to know if this was solved in recent editions?
  9. Good day, I have a question regarding how to determine the appropriate delay value for the wait( ) function call. In the target b_transport callback, we can add delay to the simulation time by passing delay amount to the wait( ) function. In simulation that uses quantum and temporal decoupling that targets super fast instruction accurate simulation, the timing does not have to be very detail (loosely timed). With or without delay in the target callback function will not cause any functional inaccuracy and still we could produce the platform that can support firmware/software development. Still if we want to put a delay to the wait( ), how can we determine the appropriate delay value for the function parameter? Thank you. Regards, Arya.
  10. Hi, I have just learned SystemC for a few days. I wonder what's the main function of wait(SC_ZERO_TIME). It means process will wait until the end of this time or wait for a cycle. But, when should I use wait(SC_ZERO_TIME) and what's the sequence if there's two wait(SC_ZERO_TIME) in two thread? Thank you all.
  11. Good Day All, I am a complete noob in SystemC. I am however, working on a simulator which utilizes a few concepts from SystemC. Kernel is picking up on either the Sc_Method or the Sc_Thread. I am aware of the wait command. It can only be used in the sc_thread. But in my code, (excerpt) I am currently using SC_thread and sc_method simultaneously. I wanted to introduce a delay in simulation time in the sc_thread (using the wait command). Is there a way to forward the simulation time in SC_METHOD that is analogous to wait() in SC_Thread. I did change one of the functions to SC_Thread, and the other to SC_Method. But, on simulation, if the kernel picks up on the SC_Method, it continues to stay in SC_Method and not go on to SC_thread. Here is the code for SC_Method: (code for SC_THREAD is given after this code) void NoximRouter::rxProcess_local() { cout<<"rxProcess_local"; // Clear outputs and indexes of transmitting protocol ResetTable(); current_level_rx_local = 0; } else {//cout<<req_rx_local.read()<<" "<<current_level_rx_local<<endl; if((req_rx_local.read()== 1- current_level_rx_local) && !buffer_snd.IsFull()) { //current_level_rx = 1 + current_level_rx; NoximPacket received_packet = flit_rx_local.read(); //cout<<"Inside NoximRouter::rxProcess_local:"<<received_packet<<endl; buffer_snd.Push(received_packet); // cout<<"receiver"<<endl; if (NoximGlobalParams::verbose_mode > VERBOSE_OFF) { cout << sc_time_stamp().to_double() / 1000 << ": Router[" << local_id << "], Received packet from PE: " << received_packet << endl; } current_level_rx_local = 1 - current_level_rx_local; } ack_rx_local.write(current_level_rx_local); THIS IS PART OF THE CODE FOR SC_THREAD: void NoximRouter::txProcess_mode() { cout<<"txProcess_mode"; while( buffer_snd.Size()!=0) //Going with just one buffer(may be corresponding to the router,... but actually for the processing element) { NoximPacket packet = buffer_snd.Front(); NoximRouteData route_data; route_data.current_id = local_id; route_data.src_id = packet.src_id; route_data.dst_id = packet.dst_id; const vector < vector<int> > o = Route(route_data); //stats.power.Arbitration(o.size()); int src= packet.src_id; vector <int> path; int col =0; // checking in the global table the channels which are free and writhing to the respective channels path.push_back(src); packet.dir=checkdir(o); if(checkmode1(path,o,src,col,packet)==1) { buffer_snd.Pop(); cout<<"Mode1\n"; packet.seq_no=path; packet.mode_tx=1; flit_tx.write(packet); mode1_traffic++; stats.pkthist.push_back(makePacketHist(packet)); for(int i=0;i<path.size();i++) {
  12. I want to learn how to install systemc-2.3.1 or systemc-2.3.0 on ubuntu 13.04 precisely and step by step. can you help me?
  13. Hi, I have two files. In header file I have two modules `camkii` and `camkii_ring`. The `camkii_ring` contains N number of `camkii` submodule. I thought of using std::vector to instantiate the submodules. See the code below. #ifndef CAMKII_H #define CAMKII_H #include <systemc.h> #include <vector> using namespace std; SC_MODULE(camkii) { sc_in_clk clock; sc_in<double> ca_conc_in; sc_signal<double> v1, v2, v3; void init() { cout << "[Ca] " << ca_conc_in << endl; //cout << sc_get_time_resolution() << endl; } void compute_rate() { // do something } SC_CTOR(camkii) { init(); SC_METHOD(compute_rates); sensitive << clock.pos(); } }; /* * This module is a ring of CamKII holoenzyme. It has total of 6 camkii * holoenzymes. */ SC_MODULE( camkii_ring ) { sc_in_clk clock; sc_in<double> ca_in; /* It has 6 subunits of holoenzymes */ vector<camkii*> subunits; void init() { for( int i = 0; i < 6; i++) { stringstream name; name << "sub" << i; camkii* c = new camkii(name.str().c_str()); c->clock(clock); c->ca_conc_in(ca_in); subunits.push_back(c); } } void compute() { } SC_CTOR(camkii_ring) { init(); SC_METHOD(compute); sensitive << clock.pos(); } }; #endif /* end of include guard: CAMKII_H */ And here is my main.cc file. #include "camkii.h" #include <systemc.h> #include <iostream> using namespace std; int sc_main(int argc, char** argv) { sc_clock clock_("GlobalClock", 10, SC_MS, 0.5); sc_signal<double> ca_conc, i1p_conc; sc_signal<double> camkii_out; /* connect the camkii ring to ports */ camkii_ring camkii_ring("cakii_ring"); camkii_ring.clock(clock_); camkii_ring.ca_in(ca_conc); cout << "Starting ..." << endl; sc_start(100, SC_MS); return 1; } It compiles fine but when I run it Error: (E112) get interface failed: port is not bound: port 'cakii_ring.sub0.port_1' (sc_in) In file: sc_port.cpp:230
  14. Hi, I'm newbie to SystemC TLM, coming from SystemVerilog UVM world. I would like to model our RTL in SystemC using TLM2.0 to speed up our Software Development process. Our RTL is not memory mapped bus architecture and we would like to use custom transaction class instead of generic payload. Is it possible to do that using TLM2.0? If yes, could you please provide me with an example. Also, I have four TLM ports communicating with each other in the same model. How does one b_transport method works with all four ports? Is it a good idea to make a model in SystemC rather than having it in SV UVM? Thanks Zubin
  15. Hi, Does SystemC support queue like SystemVerilog? I want to create dynamic array in SystemC TLM2.0, can any one suggest a better way to do it? Thanks Zubin
  16. Hello, I am having an SC_THREAD as follows // // SC_THREAD(my_proc); sensitive << event_1; dont_initialize(); // // // void my_proc() { while(1) { wait(10,SC_NS); cout << " Display ok"; wait(event_1); } } My question is i am having an situation where this event get triggered repetedly in short instance of time, lets say at time t=2 ns it get triggered then SC_THREAD starts, then again it get triggered at t=4ns, but this triggerring of event goes unnoticed. I saw some post and from them i got to know that i cant even use sc_event_queue as i am using wait in my thread. What can be alternative to implement this logic. Thanks.
  17. Hi all, After developing a virtual platform using SystemC with TLM, and also several peripherals (IP) model in high-level (LT), I realised that if in RTL design there is a UVM to say that the design is "okay". How about in high-level? Is there any methodology that we could adopt? If there is none, may I ask for your suggestion on how to verify our own SystemC TLM (LT) design? The SystemC Verification subforum seems to be obsolete, so I posted it here. Really appreciate any kind of advice and solution. Thank you. Regards, Arya.
  18. Hi Guys, It is my first day to read SystemC tutorial, forgive me if the questions are silly. I debugged following code in Visual Studio 2008 (64 bit) by setting break point at the start of do_test1 and do_test2, to my suprise, the code is running in the same thread of the sc_main function. I didn't debug in Linux environment. However, by searching the source code, I found the "pthread.h" was included by some SystemC library source code. Question 1: In Windows, will the SC_THREAD create a real thread? Or it is always in the same thread of sc_main? If this is the case, may I say SC_THREAD is creating a "fake" thread? Question 2: In Linux, since "pthread.h" is included, will SC_THREAD create a new thread? Question 3: In Windows and Linux, did I miss some settings to enable the real thread? ======================================== Following code is from this website: http://www.asic-world.com/systemc/systemc_time4.html#Example_:_sc_event #include <systemc.h> SC_MODULE (events) { sc_in<bool> clock; sc_event e1; sc_event e2; void do_test1() { while (true) { // Wait for posedge of clock wait(); cout << "@" << sc_time_stamp() <<" Starting test"<<endl; // Wait for posedge of clock wait(); cout << "@" << sc_time_stamp() <<" Triggering e1"<<endl; // Trigger event e1 e1.notify(5,SC_NS); // Wait for posedge of clock wait(); // Wait for event e2 wait(e2); cout << "@" << sc_time_stamp() <<" Got Trigger e2"<<endl; // Wait for posedge of clock wait(); cout<<"Terminating Simulation"<<endl; sc_stop(); // sc_stop triggers end of simulation } } void do_test2() { while (true) { // Wait for event e2 wait(e1); cout << "@" << sc_time_stamp() <<" Got Trigger e1"<<endl; // Wait for 3 posedge of clock wait(3); cout << "@" << sc_time_stamp() <<" Triggering e2"<<endl; // Trigger event e2 e2.notify(); } } SC_CTOR(events) { SC_CTHREAD(do_test1,clock.pos()); SC_CTHREAD(do_test2,clock.pos()); } }; int sc_main (int argc, char* argv[]) { sc_clock clock ("my_clock",1,0.5); events object("events"); object.clock (clock); sc_start(); // Run the simulation till sc_stop is encountered return 0;// Terminate simulation }
  19. What is SystemC ? Roughly I think it's a language or more specifically a library useful to create software representation (not synthesizable) of an hardware at an abstarction level higher than RTL (- which is synthesizable). Please correct me if I am wrong, Also help me with some standardize definition. What is architectural exploration ? And How SystemC and TLM is useful for it ? If someone working in a systemC domain, could they classify themselves as a software engineer ? Where does it classify ? Which is more appropriate semiconductor industory , EDA or ESL domain ? How someone working in systemC explains their Job to someone non-technical person ? PS: If this question is not appropriate for this forum, then please help me with some details where I could find my answers. I believe these questions must be answered before someone starts learning it.
  20. I start to learn SystemC and SCV. But I don't have much experience on complex Makefile as the one provided in the install package by SCV. It is too hard for me to understand who the files are really compiled. I am not sure if any one can provide simple Makefile template (Only Linux platform is OK). Thanks.
  21. Hi all, First I apologize if I am using the wrong forum for the question. Please, I would like to know whether someone here could give updates on uvm-sc status. When will a first public release be available ? Regards
  22. Hi, I am currently trying to load modules from external dlls into a systemc application. Basic info: compiler gcc (from cygwin) x64 bit os: windows 7 Also I am using Systemc-AMS but as this appears to be a "problem" with the systemc core I posted it in this forum (feel free to move if inappropriate). The modules are build as shared libs and can can be loaded without problems (using the LoadLibrary function). While I can connect the ports with signals the runtime complains about "no driver" during simulation. As the same code compiled directly into the application works I assume it is not a problem with the SystemC code itself but with the core not "recognizing" the modules. I read on stackoverflow (http://stackoverflow.com/questions/13794659/loading-systemc-modules-dynamically-at-run-time) that someone had a similar problem once but no solution was posted. Has anyone ever done something similar and is able to help? schuschu
  23. Hello, I have a Packet class, that for the last week I had to overload some operators ot make it compile using SystemC. Currently I'm trying to instantiate this class in the main file to start testing and I am having compilation issues. The custom class: from my_defines.h typedef sc_bv< _DATA_SIZE > particle_t; #include <systemc.h> #include "my_defines.h" class Packet { public: sc_bv< _BITADDR > _field1; sc_bv< _BITADDR > _field2; sc_bv< _INDEX > _index; particle_t _data; virtual ~Packet(); Packet(); Packet(sc_bv<_BITADDR> _field1, sc_bv< _BITADDR > _field2 sc_bv< _INDEX > _index, particle_t _data); .... } inline Packet& operator =(const Packet& rhs){ ... } inline friend void sc_trace(sc_trace_file *tf, const Packet & v, const std::string & NAME ){ .... } inline friend ostream& operator<<(ostream& os, Packet const & v) { .... } }; Queue: SC_MODULE(Queue) { sc_in< bool > rstn; sc_in< bool > clk; // ??? keep it or remove it ? //P1 sc_in< bool > clkin; sc_in< bool > write; sc_in< Packet > dataIn; sc_out< bool > busyIn; //P2 sc_in< bool > clkout; sc_in< bool > read; sc_out< Packet > dataOut; sc_out< bool > busyOut; // wait is a reserved word so I used busy for now //public: sc_fifo< Packet > *_buffer;//(_BUFFER_SIZE); //they key component Main file: ... int sc_main(int argc, char *argv[]) { int _channel = 0; sc_clock clk("clk",10,SC_NS, 0.5); //sc_reset rstn("rstn", 0 , SC_NS, 2.0); sc_signal< bool > rstn;// = rstn; sc_signal<bool> enable; Packet pkt1, pkt2; pkt1._field1= 0x0000; pkt1._field1 = 0x0001; pkt1._index = 0x0000; pkt1._data = 0Xffff; Queue tqueue("UUT"); tqueue.clk(clk); tqueue.clkin(clk); tqueue.clkout(clk); tqueue.rstn(rstn); tqueue.dataIn(pkt1); tqueue.dataOut(pkt2); tqueue.write(true); tqueue.read(true); sc_start(); return EXIT_SUCCESS; } Whe I coimpile Queue and Packet it compiles without problems, but when I try to compile the main file I'm receiving the error messages below. I'm using clang++ and the systemc was compiled with clang++ too, so if anyone could give me a help I would appreciate it since SystemC is not exactly 'my cup of tea' and I'm begiinig with it. ERROR LOG: clang++ -I. -I.. -I/opt/vlsi/systemc/include -c src/systemc/packet.cpp -o src/systemc/packet.o clang++ -I. -I.. -I/opt/vlsi/systemc/include -c src/systemc/queue.cpp -o src/systemc/queue.o clang++ -I. -I.. -I/opt/vlsi/systemc/include -c src/systemc/main.cpp -o src/systemc/main.o src/systemc/main.cpp:43:2: error: no matching function for call to object of type 'sc_in<Packet>' tqueue.dataIn(pkt1); ^~~~~~~~~~~~~ /opt/vlsi/systemc/include/sysc/communication/sc_signal_ports.h:166:10: note: candidate function not viable: no known conversion from 'Packet' to 'const in_if_type' (aka 'const sc_signal_in_if<data_type>') for 1st argument void operator () ( const in_if_type& interface_ ) ^ /opt/vlsi/systemc/include/sysc/communication/sc_signal_ports.h:175:10: note: candidate function not viable: no known conversion from 'Packet' to 'in_port_type &' (aka 'sc_port<if_type, 1, SC_ONE_OR_MORE_BOUND> &') for 1st argument void operator () ( in_port_type& parent_ ) ^ /opt/vlsi/systemc/include/sysc/communication/sc_signal_ports.h:184:10: note: candidate function not viable: no known conversion from 'Packet' to 'inout_port_type &' (aka 'sc_port<inout_if_type, 1, SC_ONE_OR_MORE_BOUND> &') for 1st argument void operator () ( inout_port_type& parent_ ) ^ src/systemc/main.cpp:44:2: error: no matching function for call to object of type 'sc_out<Packet>' tqueue.dataOut(pkt2); ^~~~~~~~~~~~~~ /opt/vlsi/systemc/include/sysc/communication/sc_port.h:270:10: note: candidate function not viable: no known conversion from 'Packet' to 'sc_core::sc_signal_inout_if<Packet> &' for 1st argument void operator () ( IF& interface_ ) ^ /opt/vlsi/systemc/include/sysc/communication/sc_port.h:279:10: note: candidate function not viable: no known conversion from 'Packet' to 'port_type &' (aka 'sc_port_b<sc_core::sc_signal_inout_if<Packet> > &') for 1st argument void operator () ( port_type& parent_ ) ^ src/systemc/main.cpp:45:2: error: no matching function for call to object of type 'sc_in<bool>' tqueue.write(true); ^~~~~~~~~~~~ /opt/vlsi/systemc/include/sysc/communication/sc_signal_ports.h:489:10: note: candidate function not viable: no known conversion from 'bool' to 'const in_if_type' (aka 'const sc_signal_in_if<data_type>') for 1st argument void operator () ( const in_if_type& interface_ ) ^ /opt/vlsi/systemc/include/sysc/communication/sc_signal_ports.h:498:10: note: candidate function not viable: no known conversion from 'bool' to 'in_port_type &' (aka 'sc_port<if_type, 1, SC_ONE_OR_MORE_BOUND> &') for 1st argument void operator () ( in_port_type& parent_ ) ^ /opt/vlsi/systemc/include/sysc/communication/sc_signal_ports.h:507:10: note: candidate function not viable: no known conversion from 'bool' to 'inout_port_type &' (aka 'sc_port<inout_if_type, 1, SC_ONE_OR_MORE_BOUND> &') for 1st argument void operator () ( inout_port_type& parent_ ) ^ src/systemc/main.cpp:46:2: error: no matching function for call to object of type 'sc_in<bool>' tqueue.read(true); ^~~~~~~~~~~ /opt/vlsi/systemc/include/sysc/communication/sc_signal_ports.h:489:10: note: candidate function not viable: no known conversion from 'bool' to 'const in_if_type' (aka 'const sc_signal_in_if<data_type>') for 1st argument void operator () ( const in_if_type& interface_ ) ^ /opt/vlsi/systemc/include/sysc/communication/sc_signal_ports.h:498:10: note: candidate function not viable: no known conversion from 'bool' to 'in_port_type &' (aka 'sc_port<if_type, 1, SC_ONE_OR_MORE_BOUND> &') for 1st argument void operator () ( in_port_type& parent_ ) ^ /opt/vlsi/systemc/include/sysc/communication/sc_signal_ports.h:507:10: note: candidate function not viable: no known conversion from 'bool' to 'inout_port_type &' (aka 'sc_port<inout_if_type, 1, SC_ONE_OR_MORE_BOUND> &') for 1st argument void operator () ( inout_port_type& parent_ ) ^ 4 errors generated.
  24. Hi guys , I'm representing a systemC TLM platform in IP-XACT, I finished with systemC modules. Now, each systemC module representing a functional hardware block has to be attached to a c++ object in order to represent some non functional information. Please, is it possible to represent this information within IP-XACT ?? Thanks
  25. Hi All , I am new to SytemC and I am designing a FIFO . When I run the make file I am getting an error " no match for ‘operator=’ in ‘((sync_fifo*)this)->sync_fifo::wptr = 0’ " . I guess this has do with the sensitivity list of wptr and rptr but I am not sure how to fix it.I have highlighted the lines where I am getting error . It will be really helpful if someone could explain this . Thank you #include <systemc.h> SC_MODULE (sync_fifo){ sc_in_clk clk; sc_in<bool> rst; sc_in<bool> rd_wr; sc_out<bool> full; sc_out<bool> empty; sc_in < sc_uint<8> > data_in; sc_in < sc_uint<4> > wptr; sc_in < sc_uint <4> > rptr; sc_out < sc_uint<8> > data_out; sc_uint<8> ram_data[256]; void read_write() { if(rst == 1) { wptr=0;rptr=0;data_out=0; } else if(rd_wr == 1 && !full) { ram_data[wptr.read()]=data_in; wptr=wptr+1; } else if(rd_wr == 0 && !full) { data_out=ram_data[rptr.read()]; rptr=rptr+1; } } void emp_ful(){ if(rst == 1) { full=0; empty=0; } else { if(wptr == rptr ) { empty=1; } else if((wptr - rptr) == 15) { full=1; } else { full=empty=0; } } } SC_CTOR(sync_fifo) { SC_METHOD(read_write); sensitive << clk.pos() << rst ; sensitive << wptr ; sensitive << rptr; SC_METHOD(emp_ful); sensitive << clk.pos() << rst ; sensitive << wptr ; sensitive << rptr ; } };
×
×
  • Create New...