Jump to content

Martin Barnasconi

Members
  • Posts

    89
  • Joined

  • Last visited

  • Days Won

    18

Posts posted by Martin Barnasconi

  1. Accellera is initiating a Proposed Working Group (PWG) to identify industry interest in developing a standardized communication interface to enable interoperability of virtual modeling, simulation, and integration throughout the product lifecycle. The intent of this communication standard is to facilitate the creation of a distributed and orchestrated (“federated”) multi-domain simulation framework, compatible with and complementary to existing approaches used in different industries and sectors.

    The first Proposed Working Group meeting will be held over two days in Toulouse, France. On Monday September 25, attendees are invited to present use cases, requirements, and expectations of the standard. Tuesday September 26 will focus on the organizational aspects and intended alignment with other project initiatives or organizations, such as IRT Saint-Exupery, Eclipse Foundation, Linaro, etc. 

    More information how to join the Proposed Working Group and register to attend the first meeting on September 25+26 can be found here:

    https://accellera.org/activities/proposed-working-groups

     

  2. Quote

    Is there anything that needs attention when interconnecting TLM and AMS models?

    Your approach to connect he SystemC/TLM world with the SystemC-AMS is correct: to cross the discrete-event / TDF MoC boundary, dedicated converter ports are available for this, called sca_tdf::sca_de::sca_in/out, as explained in section 2.4 of the SystemC-AMS user's guide.

    Special attention is required to understand when digital discrete-event samples are (made) available in the TDF context. In the case of fixed TDF timesteps, a signal change at an input port of type sca_tdf::sca_de::sca_in is not immediately picked-up by the TDF model, since it runs on its own time step (set by set_timestep), which means the value will be used at the next TDF time step. In case you expect immediate action in the TDF model, then you need to make use of the dynamic timestep feature in SystemC-AMS, by using the SystemC-AMS TDF method request_next_activation in a change_attributes callback. This is explained in section 2.4.3.

    Note that when using dynamic timestep in a TDF module, you need to make sure other TDF modules in the same TDF cluster support dynamic timesteps, as explained in section 2.1.2. This means all other connected modules should "opt-in" to indicate that they support dynamic timesteps by explicitly calling the method accept_attribute_changes.

  3. There is no such thing as a default state. Equation 7.34 in the 1666.1-2016 LRM defines the contribution of the switch to the equation system, and depends on the value of the control signal (ctrl) of the switch. Since the type of the control signal should be a Boolean value, the initial value can be true or false, which is driven from the digital discrete-event side.

  4. Accellera released the SystemC AMS user's guide application examples, which are available for download via this link.

    These examples can be executed using your preferred EDA tools, as long as they support the SystemC and SystemC AMS language standard. Alternatively, you can use the open source SystemC and SystemC AMS reference implementations. Instructions for installation and execution can be found in the INSTALL or README files as part of these packages.

    We welcome your feedback!

  5. The SystemC AMS standard defines in section 9.1.2.6 (sca_util::sca_trace) that it can trace objects of type sca_traceable_object. Since all ELN primitives are derived of this type, you can simply trace the ELN component itself, see example below
     

    SC_MODULE(eln_circuit)
    { 
      // node declaration
      sca_eln::sca_node n1;      // ELN node
      sca_eln::sca_node_ref gnd; // ELN ground
    
      // component declaration
      sca_eln::sca_vsource vin;
      sca_eln::sca_r       r1;
    
      // constructor including ELN netlist
      eln_circuit( sc_core::sc_module_name nm )
      : vin("vin", 0.0, 1.23), 
        r1("r1", 1e3)
      {
        // Only ELN primitives requires explicit timestep assignment to one element
        vin.set_timestep(1.0, sc_core::SC_MS);
     
        // netlist
        vin.p(n1);
        vin.n(gnd);
     
        r1.p(n1);
        r1.n(gnd);
      }
    };
    
    
    int sc_main(int argc, char* argv[])
    {
      eln_circuit cir("eln_circuit");
      
      sca_util::sca_trace_file* tf = sca_util::sca_create_tabular_trace_file("trace.dat");
      sca_util::sca_trace(tf, cir.n1, "v_n1");
      sca_util::sca_trace(tf, cir.vin, "i_through_vin");
      sca_util::sca_trace(tf, cir.r1, "i_through_r1");
    
      sc_core::sc_start(1.0, sc_core::SC_MS);
    
      sca_util::sca_close_tabular_trace_file(tf);
    
      return 0;
    }

     

  6. The Accellera SystemC AMS Working Group released the 2020 edition of the SystemC AMS User's Guide. You will find the user's guide on this page:

    https://www.accellera.org/downloads/standards/systemc

    This version of the user's guide is fully compatible with the SystemC AMS standard released as IEEE Std. 1666.1-2016. It describes all the features introduced in the SystemC AMS language standard during the last decade. For example, the user’s guide now explains the use of the dynamic timed data flow capabilities, to make AMS system simulations even more efficient and running even faster.

    The SystemC AMS Working Group is currently preparing the release of the user's guide application examples as separate download. Availability of these application examples will be communicated at a later stage.

    Please use this forum to post your questions or remarks on the user's guide.

  7. The code snippet listed above shows that the file is repeatedly opened in the processing() method, since this method is called at each time step. Instead, the file should only be opened once, e.g. in the module constructor or initialize() callback. Note that in this case you need to make the variable of type ifstream a (private) member of the class, so other methods can access this variable.

  8. Indeed, the Accellera SystemC AMS working group is currently active in updating the SystemC AMS user's guide, including an detailed explanation of the dynamic TDF features introduced since SystemC AMS 2.0 (and also incorporated in the IEEE 1666.1 standard) and obviously removing deprecated methods.

    Examples have been presented in various workshops and tutorials given the last decade at DATE, DVCon Europe, DAC conferences. Please check the SystemC AMS community pages for some of the links.

    https://accellera.org/community/systemc/about-systemc-ams

    The "golden reference" for SystemC AMS documentation is actually the IEEE 1666.1 standard itself. Although it might require some practice to understand all the formal definitins and terms, it well explains the underlying concept and the modeling capabilities of the language. The standard can be found here, and thanks to Accellera you can download a copy via the IEEE Get Program here:

    https://standards.ieee.org/standard/1666_1-2016.html

    It is well known that SystemC AMS is much faster than Simulink. Actually I consider your 20x speed improvement rather modest, probably since your design is relatively small (this also holds for most of the academic papers I've seen). My observation is that bigger systems in SystemC-AMS show an even bigger speed difference in favor of SystemC-AMS.

  9. The (old) SystemC AMS User's Guide is now directly accessible via this link:

    http://www.accellera.org/images/downloads/standards/systemc/OSCI_SystemC_AMS_Users_Guide.pdf

    And also listed in the overview of SystemC standards:

    http://www.accellera.org/downloads/standards/systemc

    As mentioned before, the AMS Working Group members are currently working on the update of the User's Guide by including the dynamic TDF timestep features which are also part of the IEEE 1666.1 standard.

  10. Please note that the electrical primitives are predefined elements using the ELN model of computation; there is no mechanism to create your own electrical primitives. As such there is no such thing as a SCA_ELN_MODULE. Primitive modules can only be created for the TDF MoC, hence the SCA_TDF_MODULE macro as alternative to the class sca_tdf::sca_module.

    Wrt the the SystemC AMS 1.0 User's Guide, I will start an action to make it available independently of the LRM.

    Although the authors of the User's Guide are quite busy with other things, they full recognize the need to update the guide including the Dynamic TDF features as introduced in AMS 2.0 and IEEE1666.1. We hope to announce an update of the document in the coming period.

×
×
  • Create New...