diff --git a/.cproject b/.cproject index 78164e6..c51e2a2 100644 --- a/.cproject +++ b/.cproject @@ -5,7 +5,7 @@ - + @@ -17,7 +17,7 @@ - + @@ -74,7 +74,7 @@ - + @@ -86,7 +86,7 @@ - + diff --git a/examples/simple_system/CMakeLists.txt b/examples/simple_system/CMakeLists.txt index 5f27cb2..c0ce4c1 100644 --- a/examples/simple_system/CMakeLists.txt +++ b/examples/simple_system/CMakeLists.txt @@ -18,6 +18,7 @@ cmake_minimum_required (VERSION 2.8.12) # Add executable called "simple_system" that is built from the source files # "scv_tr_recording_example.cpp". The extensions are automatically found. add_executable (simple_system + plic.cpp uart.cpp spi.cpp gpio.cpp diff --git a/examples/simple_system/gen/e300_plat_t.h b/examples/simple_system/gen/e300_plat_t.h index 8e0d90f..cfb8984 100644 --- a/examples/simple_system/gen/e300_plat_t.h +++ b/examples/simple_system/gen/e300_plat_t.h @@ -1,10 +1,11 @@ #ifndef _E300_PLAT_MAP_H_ #define _E300_PLAT_MAP_H_ // need double braces, see https://stackoverflow.com/questions/6893700/how-to-construct-stdarray-object-with-initializer-list#6894191 -const std::array, 3> e300_plat_map = {{ - {&i_gpio, 0x10012000, 0x1000}, - {&i_uart, 0x10013000, 0x1000}, - {&i_spi, 0x10014000, 0x1000} +const std::array, 4> e300_plat_map = {{ + {&i_plic, 0xc000000, 0x1000}, + {&i_gpio, 0x10012000, 0x1000}, + {&i_uart, 0x10013000, 0x1000}, + {&i_spi, 0x10014000, 0x1000}, }}; #endif /* _E300_PLAT_MAP_H_ */ diff --git a/examples/simple_system/gen/gpio_regs.h b/examples/simple_system/gen/gpio_regs.h index 7b11fa7..5e39a83 100644 --- a/examples/simple_system/gen/gpio_regs.h +++ b/examples/simple_system/gen/gpio_regs.h @@ -28,7 +28,7 @@ // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // -// Created on: Tue Sep 19 18:02:10 CEST 2017 +// Created on: Wed Sep 20 11:47:24 CEST 2017 // * gpio_regs.h Author: // //////////////////////////////////////////////////////////////////////////////// @@ -137,23 +137,23 @@ inline sysc::gpio_regs::gpio_regs(sc_core::sc_module_name nm) template inline void sysc::gpio_regs::registerResources(sysc::tlm_target& target) { - target.addResource(value, 0x0UL, 0x4UL); - target.addResource(input_en, 0x4UL, 0x4UL); - target.addResource(output_en, 0x8UL, 0x4UL); - target.addResource(port, 0xcUL, 0x4UL); - target.addResource(pue, 0x10UL, 0x4UL); - target.addResource(ds, 0x14UL, 0x4UL); - target.addResource(rise_ie, 0x18UL, 0x4UL); - target.addResource(rise_ip, 0x1cUL, 0x4UL); - target.addResource(fall_ie, 0x20UL, 0x4UL); - target.addResource(fall_ip, 0x24UL, 0x4UL); - target.addResource(high_ie, 0x28UL, 0x4UL); - target.addResource(high_ip, 0x2cUL, 0x4UL); - target.addResource(low_ie, 0x30UL, 0x4UL); - target.addResource(low_ip, 0x34UL, 0x4UL); - target.addResource(iof_en, 0x38UL, 0x4UL); - target.addResource(iof_sel, 0x3cUL, 0x4UL); - target.addResource(out_xor, 0x40UL, 0x4UL); + target.addResource(value, 0x0UL); + target.addResource(input_en, 0x4UL); + target.addResource(output_en, 0x8UL); + target.addResource(port, 0xcUL); + target.addResource(pue, 0x10UL); + target.addResource(ds, 0x14UL); + target.addResource(rise_ie, 0x18UL); + target.addResource(rise_ip, 0x1cUL); + target.addResource(fall_ie, 0x20UL); + target.addResource(fall_ip, 0x24UL); + target.addResource(high_ie, 0x28UL); + target.addResource(high_ip, 0x2cUL); + target.addResource(low_ie, 0x30UL); + target.addResource(low_ip, 0x34UL); + target.addResource(iof_en, 0x38UL); + target.addResource(iof_sel, 0x3cUL); + target.addResource(out_xor, 0x40UL); } #endif // _GPIO_REGS_H_ diff --git a/examples/simple_system/gen/plic_regs.h b/examples/simple_system/gen/plic_regs.h new file mode 100644 index 0000000..bafa049 --- /dev/null +++ b/examples/simple_system/gen/plic_regs.h @@ -0,0 +1,104 @@ +//////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2017, MINRES Technologies GmbH +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, +// this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its contributors +// may be used to endorse or promote products derived from this software +// without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +// Created on: Wed Sep 20 11:47:24 CEST 2017 +// * plic_regs.h Author: +// +//////////////////////////////////////////////////////////////////////////////// + +#ifndef _PLIC_REGS_H_ +#define _PLIC_REGS_H_ + +#include +#include +#include +#include + +namespace sysc { + +class plic_regs : + public sc_core::sc_module, + public sysc::resetable +{ +protected: + // storage declarations + BEGIN_BF_DECL(priority_t, uint32_t); + BF_FIELD(priority, 0, 3); + END_BF_DECL(); + std::array r_priority; + + uint32_t r_pending; + + uint32_t r_enabled; + + BEGIN_BF_DECL(threshold_t, uint32_t); + BF_FIELD(threshold, 0, 3); + END_BF_DECL() r_threshold; + + uint32_t r_claim_complete; + + // register declarations + sysc::sc_register_field priority; + sysc::sc_register pending; + sysc::sc_register enabled; + sysc::sc_register threshold; + sysc::sc_register claim_complete; + +public: + plic_regs(sc_core::sc_module_name nm); + + template + void registerResources(sysc::tlm_target& target); +}; +} +////////////////////////////////////////////////////////////////////////////// +// member functions +////////////////////////////////////////////////////////////////////////////// + +inline sysc::plic_regs::plic_regs(sc_core::sc_module_name nm) +: sc_core::sc_module(nm) +, NAMED(priority, r_priority, 0, *this) +, NAMED(pending, r_pending, 0, *this) +, NAMED(enabled, r_enabled, 0, *this) +, NAMED(threshold, r_threshold, 0, *this) +, NAMED(claim_complete, r_claim_complete, 0, *this) +{ +} + +template +inline void sysc::plic_regs::registerResources(sysc::tlm_target& target) { + target.addResource(priority, 0x4UL); + target.addResource(pending, 0x1000UL); + target.addResource(enabled, 0x2000UL); + target.addResource(threshold, 0xc200000UL); + target.addResource(claim_complete, 0xc200004UL); +} + +#endif // _PLIC_REGS_H_ diff --git a/examples/simple_system/gen/spi_regs.h b/examples/simple_system/gen/spi_regs.h index a82afa7..8f9463f 100644 --- a/examples/simple_system/gen/spi_regs.h +++ b/examples/simple_system/gen/spi_regs.h @@ -28,7 +28,7 @@ // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // -// Created on: Tue Sep 19 18:02:09 CEST 2017 +// Created on: Wed Sep 20 11:47:24 CEST 2017 // * spi_regs.h Author: // //////////////////////////////////////////////////////////////////////////////// @@ -127,22 +127,22 @@ protected: END_BF_DECL() r_ip; // register declarations - sysc::sc_register sckdiv; - sysc::sc_register sckmode; + sysc::sc_register sckdiv; + sysc::sc_register sckmode; sysc::sc_register csid; sysc::sc_register csdef; - sysc::sc_register csmode; - sysc::sc_register delay0; - sysc::sc_register delay1; - sysc::sc_register fmt; - sysc::sc_register txdata; - sysc::sc_register rxdata; - sysc::sc_register txmark; - sysc::sc_register rxmark; - sysc::sc_register fctrl; - sysc::sc_register ffmt; - sysc::sc_register ie; - sysc::sc_register ip; + sysc::sc_register csmode; + sysc::sc_register delay0; + sysc::sc_register delay1; + sysc::sc_register fmt; + sysc::sc_register txdata; + sysc::sc_register rxdata; + sysc::sc_register txmark; + sysc::sc_register rxmark; + sysc::sc_register fctrl; + sysc::sc_register ffmt; + sysc::sc_register ie; + sysc::sc_register ip; public: spi_regs(sc_core::sc_module_name nm); @@ -178,22 +178,22 @@ inline sysc::spi_regs::spi_regs(sc_core::sc_module_name nm) template inline void sysc::spi_regs::registerResources(sysc::tlm_target& target) { - target.addResource(sckdiv, 0x0UL, 0x4UL); - target.addResource(sckmode, 0x4UL, 0x4UL); - target.addResource(csid, 0x10UL, 0x4UL); - target.addResource(csdef, 0x14UL, 0x4UL); - target.addResource(csmode, 0x18UL, 0x4UL); - target.addResource(delay0, 0x28UL, 0x4UL); - target.addResource(delay1, 0x2cUL, 0x4UL); - target.addResource(fmt, 0x40UL, 0x4UL); - target.addResource(txdata, 0x48UL, 0x4UL); - target.addResource(rxdata, 0x4cUL, 0x4UL); - target.addResource(txmark, 0x50UL, 0x4UL); - target.addResource(rxmark, 0x54UL, 0x4UL); - target.addResource(fctrl, 0x60UL, 0x4UL); - target.addResource(ffmt, 0x64UL, 0x4UL); - target.addResource(ie, 0x70UL, 0x4UL); - target.addResource(ip, 0x74UL, 0x4UL); + target.addResource(sckdiv, 0x0UL); + target.addResource(sckmode, 0x4UL); + target.addResource(csid, 0x10UL); + target.addResource(csdef, 0x14UL); + target.addResource(csmode, 0x18UL); + target.addResource(delay0, 0x28UL); + target.addResource(delay1, 0x2cUL); + target.addResource(fmt, 0x40UL); + target.addResource(txdata, 0x48UL); + target.addResource(rxdata, 0x4cUL); + target.addResource(txmark, 0x50UL); + target.addResource(rxmark, 0x54UL); + target.addResource(fctrl, 0x60UL); + target.addResource(ffmt, 0x64UL); + target.addResource(ie, 0x70UL); + target.addResource(ip, 0x74UL); } #endif // _SPI_REGS_H_ diff --git a/examples/simple_system/gen/uart_regs.h b/examples/simple_system/gen/uart_regs.h index f1533c1..b268ddf 100644 --- a/examples/simple_system/gen/uart_regs.h +++ b/examples/simple_system/gen/uart_regs.h @@ -28,7 +28,7 @@ // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // -// Created on: Tue Sep 19 18:02:09 CEST 2017 +// Created on: Wed Sep 20 11:47:24 CEST 2017 // * uart_regs.h Author: // //////////////////////////////////////////////////////////////////////////////// @@ -87,13 +87,13 @@ protected: END_BF_DECL() r_div; // register declarations - sysc::sc_register txdata; - sysc::sc_register rxdata; - sysc::sc_register txctrl; - sysc::sc_register rxctrl; - sysc::sc_register ie; - sysc::sc_register ip; - sysc::sc_register div; + sysc::sc_register txdata; + sysc::sc_register rxdata; + sysc::sc_register txctrl; + sysc::sc_register rxctrl; + sysc::sc_register ie; + sysc::sc_register ip; + sysc::sc_register div; public: uart_regs(sc_core::sc_module_name nm); @@ -120,13 +120,13 @@ inline sysc::uart_regs::uart_regs(sc_core::sc_module_name nm) template inline void sysc::uart_regs::registerResources(sysc::tlm_target& target) { - target.addResource(txdata, 0x0UL, 0x4UL); - target.addResource(rxdata, 0x4UL, 0x4UL); - target.addResource(txctrl, 0x8UL, 0x4UL); - target.addResource(rxctrl, 0xcUL, 0x4UL); - target.addResource(ie, 0x10UL, 0x4UL); - target.addResource(ip, 0x14UL, 0x4UL); - target.addResource(div, 0x18UL, 0x4UL); + target.addResource(txdata, 0x0UL); + target.addResource(rxdata, 0x4UL); + target.addResource(txctrl, 0x8UL); + target.addResource(rxctrl, 0xcUL); + target.addResource(ie, 0x10UL); + target.addResource(ip, 0x14UL); + target.addResource(div, 0x18UL); } #endif // _UART_REGS_H_ diff --git a/examples/simple_system/plic.cpp b/examples/simple_system/plic.cpp new file mode 100644 index 0000000..69f4304 --- /dev/null +++ b/examples/simple_system/plic.cpp @@ -0,0 +1,51 @@ +//////////////////////////////////////////////////////////////////////////////// +// Copyright 2017 eyck@minres.com +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may not +// use this file except in compliance with the License. You may obtain a copy +// of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +// License for the specific language governing permissions and limitations under +// the License. +//////////////////////////////////////////////////////////////////////////////// + +#include "plic.h" +#include "gen/plic_regs.h" +#include "sysc/utilities.h" + +namespace sysc { + +plic::plic(sc_core::sc_module_name nm) +: sc_core::sc_module(nm) +, tlm_target<>(clk) +, NAMED(clk_i) +, NAMED(rst_i) +, NAMEDD(plic_regs, regs) +{ + regs->registerResources(*this); + SC_METHOD(clock_cb); + sensitive<clk=clk_i.read(); +} + +void plic::reset_cb() { + if(rst_i.read()) + regs->reset_start(); + else + regs->reset_stop(); +} + +} /* namespace sysc */ diff --git a/examples/simple_system/plic.h b/examples/simple_system/plic.h new file mode 100644 index 0000000..3ad1e5b --- /dev/null +++ b/examples/simple_system/plic.h @@ -0,0 +1,42 @@ +/******************************************************************************* + * Copyright 2017 eyck@minres.com + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + ******************************************************************************/ + +#ifndef _PLIC_H_ +#define _PLIC_H_ + +#include + +namespace sysc { + +class plic_regs; + +class plic: public sc_core::sc_module, public tlm_target<> { +public: + SC_HAS_PROCESS(plic); + sc_core::sc_in clk_i; + sc_core::sc_in rst_i; + plic(sc_core::sc_module_name nm); + virtual ~plic(); +protected: + void clock_cb(); + void reset_cb(); + sc_core::sc_time clk; + std::unique_ptr regs; +}; + +} /* namespace sysc */ + +#endif /* _PLIC_H_ */ diff --git a/examples/simple_system/simple_system.cpp b/examples/simple_system/simple_system.cpp index 9a3ba0f..4295ae4 100644 --- a/examples/simple_system/simple_system.cpp +++ b/examples/simple_system/simple_system.cpp @@ -27,28 +27,31 @@ namespace sysc { simple_system::simple_system(sc_core::sc_module_name nm) : sc_core::sc_module(nm) , NAMED(i_master) -, NAMED(i_router, 3, 1) +, NAMED(i_router, 4, 1) , NAMED(i_uart) , NAMED(i_spi) , NAMED(i_gpio) +, NAMED(i_plic) , NAMED(s_clk) , NAMED(s_rst) { i_master.intor(i_router.target[0]); size_t i=0; for(const auto& e: e300_plat_map){ - i_router.initiator[i](e.target->socket); + i_router.initiator.at(i)(e.target->socket); i_router.add_target_range(i, e.start, e.size); i++; } i_uart.clk_i(s_clk); i_spi.clk_i(s_clk); i_gpio.clk_i(s_clk); + i_plic.clk_i(s_clk); s_clk.write(10_ns); i_uart.rst_i(s_rst); i_spi.rst_i(s_rst); i_gpio.rst_i(s_rst); + i_plic.rst_i(s_rst); i_master.rst_i(s_rst); SC_THREAD(gen_reset); diff --git a/examples/simple_system/simple_system.h b/examples/simple_system/simple_system.h index f91d8aa..29c9085 100644 --- a/examples/simple_system/simple_system.h +++ b/examples/simple_system/simple_system.h @@ -26,6 +26,7 @@ #include "uart.h" #include "spi.h" #include "gpio.h" +#include "plic.h" #include "test_initiator.h" #include @@ -44,6 +45,7 @@ public: uart i_uart; spi i_spi; gpio i_gpio; + plic i_plic; sc_core::sc_signal s_clk; sc_core::sc_signal s_rst; diff --git a/examples/simple_system/test_initiator.cpp b/examples/simple_system/test_initiator.cpp index 0d7f51f..f5bd85f 100644 --- a/examples/simple_system/test_initiator.cpp +++ b/examples/simple_system/test_initiator.cpp @@ -44,7 +44,8 @@ void test_initiator::run() { std::array data; srInfo()("group", "comm")("read access"); gp.set_command(tlm::TLM_READ_COMMAND); - gp.set_address(0x10012000); +// gp.set_address(0x10012000); + gp.set_address(0xc000004); gp.set_data_ptr(data.data()); gp.set_data_length(data.size()); gp.set_streaming_width(4); diff --git a/sc-components b/sc-components index 48428f0..0ae9ca9 160000 --- a/sc-components +++ b/sc-components @@ -1 +1 @@ -Subproject commit 48428f097659421db15d1eeac3a74fdd653db6e5 +Subproject commit 0ae9ca921a3c59f7f5e0cad119314e65bd50c327 diff --git a/simple_system.txlog b/simple_system.txlog index e4c814c..fb0f7bf 100644 --- a/simple_system.txlog +++ b/simple_system.txlog @@ -29,7 +29,7 @@ end_attribute (ID 1, name "end_delay", type "UNSIGNED") tx_begin 2 6 20 ns a 0 tx_relation "PRED/SUCC" 2 1 -scv_tr_stream (ID 9, name "i_simple_system.i_gpio.socket.blocking", kind "TRANSACTOR") +scv_tr_stream (ID 9, name "i_simple_system.i_plic.socket.blocking", kind "TRANSACTOR") scv_tr_generator (ID 10, name "read", scv_tr_stream 9, begin_attribute (ID 0, name "start_delay", type "UNSIGNED") end_attribute (ID 1, name "end_delay", type "UNSIGNED") @@ -45,7 +45,7 @@ end_attribute (ID 1, name "end_delay", type "UNSIGNED") tx_begin 3 10 20 ns a 0 tx_relation "PRED/SUCC" 3 2 -tx_record_attribute 3 "trans.address" UNSIGNED = 0 +tx_record_attribute 3 "trans.address" UNSIGNED = 4 tx_record_attribute 3 "trans.command" ENUMERATION = "tlm::TLM_READ_COMMAND" tx_record_attribute 3 "trans.data" POINTER = 0 tx_record_attribute 3 "trans.data_length" UNSIGNED = 4 @@ -57,8 +57,8 @@ tx_record_attribute 3 "trans.streaming_width" UNSIGNED = 4 tx_record_attribute 3 "trans.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD" tx_record_attribute 3 "trans.data_value" UNSIGNED = 0 tx_end 3 10 20 ns -a 0 -tx_record_attribute 2 "trans.address" UNSIGNED = 0 +a 10000 +tx_record_attribute 2 "trans.address" UNSIGNED = 4 tx_record_attribute 2 "trans.command" ENUMERATION = "tlm::TLM_READ_COMMAND" tx_record_attribute 2 "trans.data" POINTER = 0 tx_record_attribute 2 "trans.data_length" UNSIGNED = 4 @@ -70,8 +70,8 @@ tx_record_attribute 2 "trans.streaming_width" UNSIGNED = 4 tx_record_attribute 2 "trans.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD" tx_record_attribute 2 "trans.data_value" UNSIGNED = 0 tx_end 2 6 20 ns -a 0 -tx_record_attribute 1 "trans.address" UNSIGNED = 268509184 +a 10000 +tx_record_attribute 1 "trans.address" UNSIGNED = 201326596 tx_record_attribute 1 "trans.command" ENUMERATION = "tlm::TLM_READ_COMMAND" tx_record_attribute 1 "trans.data" POINTER = 0 tx_record_attribute 1 "trans.data_length" UNSIGNED = 4 @@ -83,8 +83,8 @@ tx_record_attribute 1 "trans.streaming_width" UNSIGNED = 4 tx_record_attribute 1 "trans.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD" tx_record_attribute 1 "trans.data_value" UNSIGNED = 0 tx_end 1 2 20 ns -a 0 -scv_tr_stream (ID 13, name "i_simple_system.i_gpio.socket.bl_t_ann", kind "TRANSACTOR") +a 10000 +scv_tr_stream (ID 13, name "i_simple_system.i_plic.socket.bl_t_ann", kind "TRANSACTOR") scv_tr_generator (ID 14, name "read", scv_tr_stream 13, begin_attribute (ID 0, name "", type "ENUMERATION") end_attribute (ID 1, name "", type "ENUMERATION") @@ -99,7 +99,7 @@ end_attribute (ID 1, name "", type "ENUMERATION") ) tx_begin 4 14 20 ns a "tlm::TLM_READ_COMMAND" -tx_record_attribute 4 "trans.address" UNSIGNED = 0 +tx_record_attribute 4 "trans.address" UNSIGNED = 4 tx_record_attribute 4 "trans.command" ENUMERATION = "tlm::TLM_READ_COMMAND" tx_record_attribute 4 "trans.data" POINTER = 0 tx_record_attribute 4 "trans.data_length" UNSIGNED = 4 @@ -110,8 +110,6 @@ tx_record_attribute 4 "trans.byte_enable_length" UNSIGNED = 0 tx_record_attribute 4 "trans.streaming_width" UNSIGNED = 4 tx_record_attribute 4 "trans.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD" tx_relation "PARENT/CHILD" 4 3 -tx_end 4 14 20 ns -a "tlm::TLM_INCOMPLETE_RESPONSE" scv_tr_stream (ID 17, name "i_simple_system.i_router.intor_0.bl_t_ann", kind "TRANSACTOR") scv_tr_generator (ID 18, name "read", scv_tr_stream 17, begin_attribute (ID 0, name "", type "ENUMERATION") @@ -127,7 +125,7 @@ end_attribute (ID 1, name "", type "ENUMERATION") ) tx_begin 5 18 20 ns a "tlm::TLM_READ_COMMAND" -tx_record_attribute 5 "trans.address" UNSIGNED = 0 +tx_record_attribute 5 "trans.address" UNSIGNED = 4 tx_record_attribute 5 "trans.command" ENUMERATION = "tlm::TLM_READ_COMMAND" tx_record_attribute 5 "trans.data" POINTER = 0 tx_record_attribute 5 "trans.data_length" UNSIGNED = 4 @@ -138,8 +136,6 @@ tx_record_attribute 5 "trans.byte_enable_length" UNSIGNED = 0 tx_record_attribute 5 "trans.streaming_width" UNSIGNED = 4 tx_record_attribute 5 "trans.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD" tx_relation "PARENT/CHILD" 5 2 -tx_end 5 18 20 ns -a "tlm::TLM_INCOMPLETE_RESPONSE" scv_tr_stream (ID 21, name "i_simple_system.i_router.target_0.bl_t_ann", kind "TRANSACTOR") scv_tr_generator (ID 22, name "read", scv_tr_stream 21, begin_attribute (ID 0, name "", type "ENUMERATION") @@ -155,7 +151,7 @@ end_attribute (ID 1, name "", type "ENUMERATION") ) tx_begin 6 22 20 ns a "tlm::TLM_READ_COMMAND" -tx_record_attribute 6 "trans.address" UNSIGNED = 268509184 +tx_record_attribute 6 "trans.address" UNSIGNED = 201326596 tx_record_attribute 6 "trans.command" ENUMERATION = "tlm::TLM_READ_COMMAND" tx_record_attribute 6 "trans.data" POINTER = 0 tx_record_attribute 6 "trans.data_length" UNSIGNED = 4 @@ -166,15 +162,45 @@ tx_record_attribute 6 "trans.byte_enable_length" UNSIGNED = 0 tx_record_attribute 6 "trans.streaming_width" UNSIGNED = 4 tx_record_attribute 6 "trans.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD" tx_relation "PARENT/CHILD" 6 1 -tx_end 6 22 20 ns +tx_end 6 22 30 ns +a "tlm::TLM_INCOMPLETE_RESPONSE" +tx_end 5 18 30 ns +a "tlm::TLM_INCOMPLETE_RESPONSE" +tx_end 4 14 30 ns a "tlm::TLM_INCOMPLETE_RESPONSE" tx_begin 7 3 30 ns -a 0 -tx_begin 8 7 30 ns -a 0 +a 10000 +scv_tr_stream (ID 25, name "i_simple_system.i_router.intor_1.blocking", kind "TRANSACTOR") +scv_tr_generator (ID 26, name "read", scv_tr_stream 25, +begin_attribute (ID 0, name "start_delay", type "UNSIGNED") +end_attribute (ID 1, name "end_delay", type "UNSIGNED") +) +scv_tr_generator (ID 27, name "write", scv_tr_stream 25, +begin_attribute (ID 0, name "start_delay", type "UNSIGNED") +end_attribute (ID 1, name "end_delay", type "UNSIGNED") +) +scv_tr_generator (ID 28, name "ignore", scv_tr_stream 25, +begin_attribute (ID 0, name "start_delay", type "UNSIGNED") +end_attribute (ID 1, name "end_delay", type "UNSIGNED") +) +tx_begin 8 27 30 ns +a 10000 tx_relation "PRED/SUCC" 8 7 -tx_begin 9 11 30 ns -a 0 +scv_tr_stream (ID 29, name "i_simple_system.i_gpio.socket.blocking", kind "TRANSACTOR") +scv_tr_generator (ID 30, name "read", scv_tr_stream 29, +begin_attribute (ID 0, name "start_delay", type "UNSIGNED") +end_attribute (ID 1, name "end_delay", type "UNSIGNED") +) +scv_tr_generator (ID 31, name "write", scv_tr_stream 29, +begin_attribute (ID 0, name "start_delay", type "UNSIGNED") +end_attribute (ID 1, name "end_delay", type "UNSIGNED") +) +scv_tr_generator (ID 32, name "ignore", scv_tr_stream 29, +begin_attribute (ID 0, name "start_delay", type "UNSIGNED") +end_attribute (ID 1, name "end_delay", type "UNSIGNED") +) +tx_begin 9 31 30 ns +a 10000 tx_relation "PRED/SUCC" 9 8 tx_record_attribute 9 "trans.address" UNSIGNED = 0 tx_record_attribute 9 "trans.command" ENUMERATION = "tlm::TLM_WRITE_COMMAND" @@ -187,8 +213,8 @@ tx_record_attribute 9 "trans.byte_enable_length" UNSIGNED = 0 tx_record_attribute 9 "trans.streaming_width" UNSIGNED = 4 tx_record_attribute 9 "trans.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD" tx_record_attribute 9 "trans.data_value" UNSIGNED = 165 -tx_end 9 11 30 ns -a 0 +tx_end 9 31 30 ns +a 10000 tx_record_attribute 8 "trans.address" UNSIGNED = 0 tx_record_attribute 8 "trans.command" ENUMERATION = "tlm::TLM_WRITE_COMMAND" tx_record_attribute 8 "trans.data" POINTER = 0 @@ -200,8 +226,8 @@ tx_record_attribute 8 "trans.byte_enable_length" UNSIGNED = 0 tx_record_attribute 8 "trans.streaming_width" UNSIGNED = 4 tx_record_attribute 8 "trans.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD" tx_record_attribute 8 "trans.data_value" UNSIGNED = 165 -tx_end 8 7 30 ns -a 0 +tx_end 8 27 30 ns +a 10000 tx_record_attribute 7 "trans.address" UNSIGNED = 268509184 tx_record_attribute 7 "trans.command" ENUMERATION = "tlm::TLM_WRITE_COMMAND" tx_record_attribute 7 "trans.data" POINTER = 0 @@ -214,10 +240,10 @@ tx_record_attribute 7 "trans.streaming_width" UNSIGNED = 4 tx_record_attribute 7 "trans.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD" tx_record_attribute 7 "trans.data_value" UNSIGNED = 165 tx_end 7 3 30 ns -a 0 -tx_begin 10 15 30 ns +a 10000 +tx_begin 10 23 40 ns a "tlm::TLM_WRITE_COMMAND" -tx_record_attribute 10 "trans.address" UNSIGNED = 0 +tx_record_attribute 10 "trans.address" UNSIGNED = 268509184 tx_record_attribute 10 "trans.command" ENUMERATION = "tlm::TLM_WRITE_COMMAND" tx_record_attribute 10 "trans.data" POINTER = 0 tx_record_attribute 10 "trans.data_length" UNSIGNED = 4 @@ -227,10 +253,23 @@ tx_record_attribute 10 "trans.byte_enable" POINTER = 0 tx_record_attribute 10 "trans.byte_enable_length" UNSIGNED = 0 tx_record_attribute 10 "trans.streaming_width" UNSIGNED = 4 tx_record_attribute 10 "trans.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD" -tx_relation "PARENT/CHILD" 10 9 -tx_end 10 15 30 ns +tx_relation "PARENT/CHILD" 10 7 +tx_end 10 23 40 ns a "tlm::TLM_OK_RESPONSE" -tx_begin 11 19 30 ns +scv_tr_stream (ID 33, name "i_simple_system.i_gpio.socket.bl_t_ann", kind "TRANSACTOR") +scv_tr_generator (ID 34, name "read", scv_tr_stream 33, +begin_attribute (ID 0, name "", type "ENUMERATION") +end_attribute (ID 1, name "", type "ENUMERATION") +) +scv_tr_generator (ID 35, name "write", scv_tr_stream 33, +begin_attribute (ID 0, name "", type "ENUMERATION") +end_attribute (ID 1, name "", type "ENUMERATION") +) +scv_tr_generator (ID 36, name "ignore", scv_tr_stream 33, +begin_attribute (ID 0, name "", type "ENUMERATION") +end_attribute (ID 1, name "", type "ENUMERATION") +) +tx_begin 11 35 40 ns a "tlm::TLM_WRITE_COMMAND" tx_record_attribute 11 "trans.address" UNSIGNED = 0 tx_record_attribute 11 "trans.command" ENUMERATION = "tlm::TLM_WRITE_COMMAND" @@ -242,12 +281,25 @@ tx_record_attribute 11 "trans.byte_enable" POINTER = 0 tx_record_attribute 11 "trans.byte_enable_length" UNSIGNED = 0 tx_record_attribute 11 "trans.streaming_width" UNSIGNED = 4 tx_record_attribute 11 "trans.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD" -tx_relation "PARENT/CHILD" 11 8 -tx_end 11 19 30 ns +tx_relation "PARENT/CHILD" 11 9 +tx_end 11 35 40 ns a "tlm::TLM_OK_RESPONSE" -tx_begin 12 23 30 ns +scv_tr_stream (ID 37, name "i_simple_system.i_router.intor_1.bl_t_ann", kind "TRANSACTOR") +scv_tr_generator (ID 38, name "read", scv_tr_stream 37, +begin_attribute (ID 0, name "", type "ENUMERATION") +end_attribute (ID 1, name "", type "ENUMERATION") +) +scv_tr_generator (ID 39, name "write", scv_tr_stream 37, +begin_attribute (ID 0, name "", type "ENUMERATION") +end_attribute (ID 1, name "", type "ENUMERATION") +) +scv_tr_generator (ID 40, name "ignore", scv_tr_stream 37, +begin_attribute (ID 0, name "", type "ENUMERATION") +end_attribute (ID 1, name "", type "ENUMERATION") +) +tx_begin 12 39 40 ns a "tlm::TLM_WRITE_COMMAND" -tx_record_attribute 12 "trans.address" UNSIGNED = 268509184 +tx_record_attribute 12 "trans.address" UNSIGNED = 0 tx_record_attribute 12 "trans.command" ENUMERATION = "tlm::TLM_WRITE_COMMAND" tx_record_attribute 12 "trans.data" POINTER = 0 tx_record_attribute 12 "trans.data_length" UNSIGNED = 4 @@ -257,6 +309,6 @@ tx_record_attribute 12 "trans.byte_enable" POINTER = 0 tx_record_attribute 12 "trans.byte_enable_length" UNSIGNED = 0 tx_record_attribute 12 "trans.streaming_width" UNSIGNED = 4 tx_record_attribute 12 "trans.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD" -tx_relation "PARENT/CHILD" 12 7 -tx_end 12 23 30 ns +tx_relation "PARENT/CHILD" 12 8 +tx_end 12 39 40 ns a "tlm::TLM_OK_RESPONSE"