extended example to demonstrate use of indexed registers
This commit is contained in:
parent
68a3a36d5d
commit
09aab928ba
@ -5,7 +5,7 @@
|
|||||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.macosx.exe.debug.133691581" moduleId="org.eclipse.cdt.core.settings" name="Debug">
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.macosx.exe.debug.133691581" moduleId="org.eclipse.cdt.core.settings" name="Debug">
|
||||||
<externalSettings/>
|
<externalSettings/>
|
||||||
<extensions>
|
<extensions>
|
||||||
<extension id="org.eclipse.cdt.core.MachO64" point="org.eclipse.cdt.core.BinaryParser"/>
|
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
@ -17,7 +17,7 @@
|
|||||||
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.macosx.exe.debug.133691581" name="Debug" parent="cdt.managedbuild.config.gnu.macosx.exe.debug">
|
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.macosx.exe.debug.133691581" name="Debug" parent="cdt.managedbuild.config.gnu.macosx.exe.debug">
|
||||||
<folderInfo id="cdt.managedbuild.config.gnu.macosx.exe.debug.133691581." name="/" resourcePath="">
|
<folderInfo id="cdt.managedbuild.config.gnu.macosx.exe.debug.133691581." name="/" resourcePath="">
|
||||||
<toolChain id="cdt.managedbuild.toolchain.gnu.macosx.exe.debug.500082514" name="MacOSX GCC" superClass="cdt.managedbuild.toolchain.gnu.macosx.exe.debug">
|
<toolChain id="cdt.managedbuild.toolchain.gnu.macosx.exe.debug.500082514" name="MacOSX GCC" superClass="cdt.managedbuild.toolchain.gnu.macosx.exe.debug">
|
||||||
<targetPlatform id="cdt.managedbuild.target.gnu.platform.macosx.exe.debug.493103663" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.macosx.exe.debug"/>
|
<targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.target.gnu.platform.macosx.exe.debug.493103663" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.macosx.exe.debug"/>
|
||||||
<builder buildPath="${workspace_loc:/sc-components-test/build}" id="cdt.managedbuild.target.gnu.builder.base.214255941" keepEnvironmentInBuildfile="true" managedBuildOn="false" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.base"/>
|
<builder buildPath="${workspace_loc:/sc-components-test/build}" id="cdt.managedbuild.target.gnu.builder.base.214255941" keepEnvironmentInBuildfile="true" managedBuildOn="false" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.base"/>
|
||||||
<tool id="cdt.managedbuild.tool.macosx.c.linker.macosx.exe.debug.1022976995" name="MacOS X C Linker" superClass="cdt.managedbuild.tool.macosx.c.linker.macosx.exe.debug"/>
|
<tool id="cdt.managedbuild.tool.macosx.c.linker.macosx.exe.debug.1022976995" name="MacOS X C Linker" superClass="cdt.managedbuild.tool.macosx.c.linker.macosx.exe.debug"/>
|
||||||
<tool command="c++" id="cdt.managedbuild.tool.macosx.cpp.linker.macosx.exe.debug.1153644061" name="MacOS X C++ Linker" superClass="cdt.managedbuild.tool.macosx.cpp.linker.macosx.exe.debug">
|
<tool command="c++" id="cdt.managedbuild.tool.macosx.cpp.linker.macosx.exe.debug.1153644061" name="MacOS X C++ Linker" superClass="cdt.managedbuild.tool.macosx.cpp.linker.macosx.exe.debug">
|
||||||
@ -74,7 +74,7 @@
|
|||||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.macosx.exe.release.222902119" moduleId="org.eclipse.cdt.core.settings" name="Release">
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.macosx.exe.release.222902119" moduleId="org.eclipse.cdt.core.settings" name="Release">
|
||||||
<externalSettings/>
|
<externalSettings/>
|
||||||
<extensions>
|
<extensions>
|
||||||
<extension id="org.eclipse.cdt.core.MachO64" point="org.eclipse.cdt.core.BinaryParser"/>
|
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
@ -86,7 +86,7 @@
|
|||||||
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.macosx.exe.release.222902119" name="Release" parent="cdt.managedbuild.config.macosx.exe.release">
|
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.macosx.exe.release.222902119" name="Release" parent="cdt.managedbuild.config.macosx.exe.release">
|
||||||
<folderInfo id="cdt.managedbuild.config.macosx.exe.release.222902119." name="/" resourcePath="">
|
<folderInfo id="cdt.managedbuild.config.macosx.exe.release.222902119." name="/" resourcePath="">
|
||||||
<toolChain id="cdt.managedbuild.toolchain.gnu.macosx.exe.release.370067321" name="MacOSX GCC" superClass="cdt.managedbuild.toolchain.gnu.macosx.exe.release">
|
<toolChain id="cdt.managedbuild.toolchain.gnu.macosx.exe.release.370067321" name="MacOSX GCC" superClass="cdt.managedbuild.toolchain.gnu.macosx.exe.release">
|
||||||
<targetPlatform id="cdt.managedbuild.target.gnu.platform.macosx.exe.release.1613432662" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.macosx.exe.release"/>
|
<targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.target.gnu.platform.macosx.exe.release.1613432662" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.macosx.exe.release"/>
|
||||||
<builder buildPath="${workspace_loc:/scv_tr_sqlite}/Release" id="cdt.managedbuild.target.gnu.builder.macosx.exe.release.1921784777" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.macosx.exe.release"/>
|
<builder buildPath="${workspace_loc:/scv_tr_sqlite}/Release" id="cdt.managedbuild.target.gnu.builder.macosx.exe.release.1921784777" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.macosx.exe.release"/>
|
||||||
<tool id="cdt.managedbuild.tool.macosx.c.linker.macosx.exe.release.835264205" name="MacOS X C Linker" superClass="cdt.managedbuild.tool.macosx.c.linker.macosx.exe.release"/>
|
<tool id="cdt.managedbuild.tool.macosx.c.linker.macosx.exe.release.835264205" name="MacOS X C Linker" superClass="cdt.managedbuild.tool.macosx.c.linker.macosx.exe.release"/>
|
||||||
<tool id="cdt.managedbuild.tool.macosx.cpp.linker.macosx.exe.release.807087528" name="MacOS X C++ Linker" superClass="cdt.managedbuild.tool.macosx.cpp.linker.macosx.exe.release">
|
<tool id="cdt.managedbuild.tool.macosx.cpp.linker.macosx.exe.release.807087528" name="MacOS X C++ Linker" superClass="cdt.managedbuild.tool.macosx.cpp.linker.macosx.exe.release">
|
||||||
|
@ -18,6 +18,7 @@ cmake_minimum_required (VERSION 2.8.12)
|
|||||||
# Add executable called "simple_system" that is built from the source files
|
# Add executable called "simple_system" that is built from the source files
|
||||||
# "scv_tr_recording_example.cpp". The extensions are automatically found.
|
# "scv_tr_recording_example.cpp". The extensions are automatically found.
|
||||||
add_executable (simple_system
|
add_executable (simple_system
|
||||||
|
plic.cpp
|
||||||
uart.cpp
|
uart.cpp
|
||||||
spi.cpp
|
spi.cpp
|
||||||
gpio.cpp
|
gpio.cpp
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
#ifndef _E300_PLAT_MAP_H_
|
#ifndef _E300_PLAT_MAP_H_
|
||||||
#define _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
|
// need double braces, see https://stackoverflow.com/questions/6893700/how-to-construct-stdarray-object-with-initializer-list#6894191
|
||||||
const std::array<sysc::target_memory_map_entry<32>, 3> e300_plat_map = {{
|
const std::array<sysc::target_memory_map_entry<32>, 4> e300_plat_map = {{
|
||||||
|
{&i_plic, 0xc000000, 0x1000},
|
||||||
{&i_gpio, 0x10012000, 0x1000},
|
{&i_gpio, 0x10012000, 0x1000},
|
||||||
{&i_uart, 0x10013000, 0x1000},
|
{&i_uart, 0x10013000, 0x1000},
|
||||||
{&i_spi, 0x10014000, 0x1000}
|
{&i_spi, 0x10014000, 0x1000},
|
||||||
}};
|
}};
|
||||||
|
|
||||||
#endif /* _E300_PLAT_MAP_H_ */
|
#endif /* _E300_PLAT_MAP_H_ */
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
// POSSIBILITY OF SUCH DAMAGE.
|
// 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: <RDL Generator>
|
// * gpio_regs.h Author: <RDL Generator>
|
||||||
//
|
//
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
@ -137,23 +137,23 @@ inline sysc::gpio_regs::gpio_regs(sc_core::sc_module_name nm)
|
|||||||
|
|
||||||
template<unsigned BUSWIDTH>
|
template<unsigned BUSWIDTH>
|
||||||
inline void sysc::gpio_regs::registerResources(sysc::tlm_target<BUSWIDTH>& target) {
|
inline void sysc::gpio_regs::registerResources(sysc::tlm_target<BUSWIDTH>& target) {
|
||||||
target.addResource(value, 0x0UL, 0x4UL);
|
target.addResource(value, 0x0UL);
|
||||||
target.addResource(input_en, 0x4UL, 0x4UL);
|
target.addResource(input_en, 0x4UL);
|
||||||
target.addResource(output_en, 0x8UL, 0x4UL);
|
target.addResource(output_en, 0x8UL);
|
||||||
target.addResource(port, 0xcUL, 0x4UL);
|
target.addResource(port, 0xcUL);
|
||||||
target.addResource(pue, 0x10UL, 0x4UL);
|
target.addResource(pue, 0x10UL);
|
||||||
target.addResource(ds, 0x14UL, 0x4UL);
|
target.addResource(ds, 0x14UL);
|
||||||
target.addResource(rise_ie, 0x18UL, 0x4UL);
|
target.addResource(rise_ie, 0x18UL);
|
||||||
target.addResource(rise_ip, 0x1cUL, 0x4UL);
|
target.addResource(rise_ip, 0x1cUL);
|
||||||
target.addResource(fall_ie, 0x20UL, 0x4UL);
|
target.addResource(fall_ie, 0x20UL);
|
||||||
target.addResource(fall_ip, 0x24UL, 0x4UL);
|
target.addResource(fall_ip, 0x24UL);
|
||||||
target.addResource(high_ie, 0x28UL, 0x4UL);
|
target.addResource(high_ie, 0x28UL);
|
||||||
target.addResource(high_ip, 0x2cUL, 0x4UL);
|
target.addResource(high_ip, 0x2cUL);
|
||||||
target.addResource(low_ie, 0x30UL, 0x4UL);
|
target.addResource(low_ie, 0x30UL);
|
||||||
target.addResource(low_ip, 0x34UL, 0x4UL);
|
target.addResource(low_ip, 0x34UL);
|
||||||
target.addResource(iof_en, 0x38UL, 0x4UL);
|
target.addResource(iof_en, 0x38UL);
|
||||||
target.addResource(iof_sel, 0x3cUL, 0x4UL);
|
target.addResource(iof_sel, 0x3cUL);
|
||||||
target.addResource(out_xor, 0x40UL, 0x4UL);
|
target.addResource(out_xor, 0x40UL);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // _GPIO_REGS_H_
|
#endif // _GPIO_REGS_H_
|
||||||
|
104
examples/simple_system/gen/plic_regs.h
Normal file
104
examples/simple_system/gen/plic_regs.h
Normal file
@ -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: <RDL Generator>
|
||||||
|
//
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifndef _PLIC_REGS_H_
|
||||||
|
#define _PLIC_REGS_H_
|
||||||
|
|
||||||
|
#include <sysc/utilities.h>
|
||||||
|
#include <util/bit_field.h>
|
||||||
|
#include <sysc/register.h>
|
||||||
|
#include <sysc/tlm_target.h>
|
||||||
|
|
||||||
|
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<priority_t, 255> 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_t, 255> priority;
|
||||||
|
sysc::sc_register<uint32_t> pending;
|
||||||
|
sysc::sc_register<uint32_t> enabled;
|
||||||
|
sysc::sc_register<threshold_t> threshold;
|
||||||
|
sysc::sc_register<uint32_t> claim_complete;
|
||||||
|
|
||||||
|
public:
|
||||||
|
plic_regs(sc_core::sc_module_name nm);
|
||||||
|
|
||||||
|
template<unsigned BUSWIDTH=32>
|
||||||
|
void registerResources(sysc::tlm_target<BUSWIDTH>& 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<unsigned BUSWIDTH>
|
||||||
|
inline void sysc::plic_regs::registerResources(sysc::tlm_target<BUSWIDTH>& 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_
|
@ -28,7 +28,7 @@
|
|||||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
// POSSIBILITY OF SUCH DAMAGE.
|
// 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: <RDL Generator>
|
// * spi_regs.h Author: <RDL Generator>
|
||||||
//
|
//
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
@ -127,22 +127,22 @@ protected:
|
|||||||
END_BF_DECL() r_ip;
|
END_BF_DECL() r_ip;
|
||||||
|
|
||||||
// register declarations
|
// register declarations
|
||||||
sysc::sc_register<typename sckdiv_t::StorageType> sckdiv;
|
sysc::sc_register<sckdiv_t> sckdiv;
|
||||||
sysc::sc_register<typename sckmode_t::StorageType> sckmode;
|
sysc::sc_register<sckmode_t> sckmode;
|
||||||
sysc::sc_register<uint32_t> csid;
|
sysc::sc_register<uint32_t> csid;
|
||||||
sysc::sc_register<uint32_t> csdef;
|
sysc::sc_register<uint32_t> csdef;
|
||||||
sysc::sc_register<typename csmode_t::StorageType> csmode;
|
sysc::sc_register<csmode_t> csmode;
|
||||||
sysc::sc_register<typename delay0_t::StorageType> delay0;
|
sysc::sc_register<delay0_t> delay0;
|
||||||
sysc::sc_register<typename delay1_t::StorageType> delay1;
|
sysc::sc_register<delay1_t> delay1;
|
||||||
sysc::sc_register<typename fmt_t::StorageType> fmt;
|
sysc::sc_register<fmt_t> fmt;
|
||||||
sysc::sc_register<typename txdata_t::StorageType> txdata;
|
sysc::sc_register<txdata_t> txdata;
|
||||||
sysc::sc_register<typename rxdata_t::StorageType> rxdata;
|
sysc::sc_register<rxdata_t> rxdata;
|
||||||
sysc::sc_register<typename txmark_t::StorageType> txmark;
|
sysc::sc_register<txmark_t> txmark;
|
||||||
sysc::sc_register<typename rxmark_t::StorageType> rxmark;
|
sysc::sc_register<rxmark_t> rxmark;
|
||||||
sysc::sc_register<typename fctrl_t::StorageType> fctrl;
|
sysc::sc_register<fctrl_t> fctrl;
|
||||||
sysc::sc_register<typename ffmt_t::StorageType> ffmt;
|
sysc::sc_register<ffmt_t> ffmt;
|
||||||
sysc::sc_register<typename ie_t::StorageType> ie;
|
sysc::sc_register<ie_t> ie;
|
||||||
sysc::sc_register<typename ip_t::StorageType> ip;
|
sysc::sc_register<ip_t> ip;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
spi_regs(sc_core::sc_module_name nm);
|
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<unsigned BUSWIDTH>
|
template<unsigned BUSWIDTH>
|
||||||
inline void sysc::spi_regs::registerResources(sysc::tlm_target<BUSWIDTH>& target) {
|
inline void sysc::spi_regs::registerResources(sysc::tlm_target<BUSWIDTH>& target) {
|
||||||
target.addResource(sckdiv, 0x0UL, 0x4UL);
|
target.addResource(sckdiv, 0x0UL);
|
||||||
target.addResource(sckmode, 0x4UL, 0x4UL);
|
target.addResource(sckmode, 0x4UL);
|
||||||
target.addResource(csid, 0x10UL, 0x4UL);
|
target.addResource(csid, 0x10UL);
|
||||||
target.addResource(csdef, 0x14UL, 0x4UL);
|
target.addResource(csdef, 0x14UL);
|
||||||
target.addResource(csmode, 0x18UL, 0x4UL);
|
target.addResource(csmode, 0x18UL);
|
||||||
target.addResource(delay0, 0x28UL, 0x4UL);
|
target.addResource(delay0, 0x28UL);
|
||||||
target.addResource(delay1, 0x2cUL, 0x4UL);
|
target.addResource(delay1, 0x2cUL);
|
||||||
target.addResource(fmt, 0x40UL, 0x4UL);
|
target.addResource(fmt, 0x40UL);
|
||||||
target.addResource(txdata, 0x48UL, 0x4UL);
|
target.addResource(txdata, 0x48UL);
|
||||||
target.addResource(rxdata, 0x4cUL, 0x4UL);
|
target.addResource(rxdata, 0x4cUL);
|
||||||
target.addResource(txmark, 0x50UL, 0x4UL);
|
target.addResource(txmark, 0x50UL);
|
||||||
target.addResource(rxmark, 0x54UL, 0x4UL);
|
target.addResource(rxmark, 0x54UL);
|
||||||
target.addResource(fctrl, 0x60UL, 0x4UL);
|
target.addResource(fctrl, 0x60UL);
|
||||||
target.addResource(ffmt, 0x64UL, 0x4UL);
|
target.addResource(ffmt, 0x64UL);
|
||||||
target.addResource(ie, 0x70UL, 0x4UL);
|
target.addResource(ie, 0x70UL);
|
||||||
target.addResource(ip, 0x74UL, 0x4UL);
|
target.addResource(ip, 0x74UL);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // _SPI_REGS_H_
|
#endif // _SPI_REGS_H_
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
// POSSIBILITY OF SUCH DAMAGE.
|
// 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: <RDL Generator>
|
// * uart_regs.h Author: <RDL Generator>
|
||||||
//
|
//
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
@ -87,13 +87,13 @@ protected:
|
|||||||
END_BF_DECL() r_div;
|
END_BF_DECL() r_div;
|
||||||
|
|
||||||
// register declarations
|
// register declarations
|
||||||
sysc::sc_register<typename txdata_t::StorageType> txdata;
|
sysc::sc_register<txdata_t> txdata;
|
||||||
sysc::sc_register<typename rxdata_t::StorageType> rxdata;
|
sysc::sc_register<rxdata_t> rxdata;
|
||||||
sysc::sc_register<typename txctrl_t::StorageType> txctrl;
|
sysc::sc_register<txctrl_t> txctrl;
|
||||||
sysc::sc_register<typename rxctrl_t::StorageType> rxctrl;
|
sysc::sc_register<rxctrl_t> rxctrl;
|
||||||
sysc::sc_register<typename ie_t::StorageType> ie;
|
sysc::sc_register<ie_t> ie;
|
||||||
sysc::sc_register<typename ip_t::StorageType> ip;
|
sysc::sc_register<ip_t> ip;
|
||||||
sysc::sc_register<typename div_t::StorageType> div;
|
sysc::sc_register<div_t> div;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
uart_regs(sc_core::sc_module_name nm);
|
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<unsigned BUSWIDTH>
|
template<unsigned BUSWIDTH>
|
||||||
inline void sysc::uart_regs::registerResources(sysc::tlm_target<BUSWIDTH>& target) {
|
inline void sysc::uart_regs::registerResources(sysc::tlm_target<BUSWIDTH>& target) {
|
||||||
target.addResource(txdata, 0x0UL, 0x4UL);
|
target.addResource(txdata, 0x0UL);
|
||||||
target.addResource(rxdata, 0x4UL, 0x4UL);
|
target.addResource(rxdata, 0x4UL);
|
||||||
target.addResource(txctrl, 0x8UL, 0x4UL);
|
target.addResource(txctrl, 0x8UL);
|
||||||
target.addResource(rxctrl, 0xcUL, 0x4UL);
|
target.addResource(rxctrl, 0xcUL);
|
||||||
target.addResource(ie, 0x10UL, 0x4UL);
|
target.addResource(ie, 0x10UL);
|
||||||
target.addResource(ip, 0x14UL, 0x4UL);
|
target.addResource(ip, 0x14UL);
|
||||||
target.addResource(div, 0x18UL, 0x4UL);
|
target.addResource(div, 0x18UL);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // _UART_REGS_H_
|
#endif // _UART_REGS_H_
|
||||||
|
51
examples/simple_system/plic.cpp
Normal file
51
examples/simple_system/plic.cpp
Normal file
@ -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_i;
|
||||||
|
SC_METHOD(reset_cb);
|
||||||
|
sensitive<<rst_i;
|
||||||
|
}
|
||||||
|
|
||||||
|
plic::~plic() {
|
||||||
|
}
|
||||||
|
|
||||||
|
void plic::clock_cb() {
|
||||||
|
this->clk=clk_i.read();
|
||||||
|
}
|
||||||
|
|
||||||
|
void plic::reset_cb() {
|
||||||
|
if(rst_i.read())
|
||||||
|
regs->reset_start();
|
||||||
|
else
|
||||||
|
regs->reset_stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
} /* namespace sysc */
|
42
examples/simple_system/plic.h
Normal file
42
examples/simple_system/plic.h
Normal file
@ -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 <sysc/tlm_target.h>
|
||||||
|
|
||||||
|
namespace sysc {
|
||||||
|
|
||||||
|
class plic_regs;
|
||||||
|
|
||||||
|
class plic: public sc_core::sc_module, public tlm_target<> {
|
||||||
|
public:
|
||||||
|
SC_HAS_PROCESS(plic);
|
||||||
|
sc_core::sc_in<sc_core::sc_time> clk_i;
|
||||||
|
sc_core::sc_in<bool> 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<plic_regs> regs;
|
||||||
|
};
|
||||||
|
|
||||||
|
} /* namespace sysc */
|
||||||
|
|
||||||
|
#endif /* _PLIC_H_ */
|
@ -27,28 +27,31 @@ namespace sysc {
|
|||||||
simple_system::simple_system(sc_core::sc_module_name nm)
|
simple_system::simple_system(sc_core::sc_module_name nm)
|
||||||
: sc_core::sc_module(nm)
|
: sc_core::sc_module(nm)
|
||||||
, NAMED(i_master)
|
, NAMED(i_master)
|
||||||
, NAMED(i_router, 3, 1)
|
, NAMED(i_router, 4, 1)
|
||||||
, NAMED(i_uart)
|
, NAMED(i_uart)
|
||||||
, NAMED(i_spi)
|
, NAMED(i_spi)
|
||||||
, NAMED(i_gpio)
|
, NAMED(i_gpio)
|
||||||
|
, NAMED(i_plic)
|
||||||
, NAMED(s_clk)
|
, NAMED(s_clk)
|
||||||
, NAMED(s_rst)
|
, NAMED(s_rst)
|
||||||
{
|
{
|
||||||
i_master.intor(i_router.target[0]);
|
i_master.intor(i_router.target[0]);
|
||||||
size_t i=0;
|
size_t i=0;
|
||||||
for(const auto& e: e300_plat_map){
|
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_router.add_target_range(i, e.start, e.size);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
i_uart.clk_i(s_clk);
|
i_uart.clk_i(s_clk);
|
||||||
i_spi.clk_i(s_clk);
|
i_spi.clk_i(s_clk);
|
||||||
i_gpio.clk_i(s_clk);
|
i_gpio.clk_i(s_clk);
|
||||||
|
i_plic.clk_i(s_clk);
|
||||||
s_clk.write(10_ns);
|
s_clk.write(10_ns);
|
||||||
|
|
||||||
i_uart.rst_i(s_rst);
|
i_uart.rst_i(s_rst);
|
||||||
i_spi.rst_i(s_rst);
|
i_spi.rst_i(s_rst);
|
||||||
i_gpio.rst_i(s_rst);
|
i_gpio.rst_i(s_rst);
|
||||||
|
i_plic.rst_i(s_rst);
|
||||||
i_master.rst_i(s_rst);
|
i_master.rst_i(s_rst);
|
||||||
|
|
||||||
SC_THREAD(gen_reset);
|
SC_THREAD(gen_reset);
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
#include "uart.h"
|
#include "uart.h"
|
||||||
#include "spi.h"
|
#include "spi.h"
|
||||||
#include "gpio.h"
|
#include "gpio.h"
|
||||||
|
#include "plic.h"
|
||||||
|
|
||||||
#include "test_initiator.h"
|
#include "test_initiator.h"
|
||||||
#include <sysc/router.h>
|
#include <sysc/router.h>
|
||||||
@ -44,6 +45,7 @@ public:
|
|||||||
uart i_uart;
|
uart i_uart;
|
||||||
spi i_spi;
|
spi i_spi;
|
||||||
gpio i_gpio;
|
gpio i_gpio;
|
||||||
|
plic i_plic;
|
||||||
sc_core::sc_signal<sc_core::sc_time> s_clk;
|
sc_core::sc_signal<sc_core::sc_time> s_clk;
|
||||||
sc_core::sc_signal<bool> s_rst;
|
sc_core::sc_signal<bool> s_rst;
|
||||||
|
|
||||||
|
@ -44,7 +44,8 @@ void test_initiator::run() {
|
|||||||
std::array<uint8_t, 4> data;
|
std::array<uint8_t, 4> data;
|
||||||
srInfo()("group", "comm")("read access");
|
srInfo()("group", "comm")("read access");
|
||||||
gp.set_command(tlm::TLM_READ_COMMAND);
|
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_ptr(data.data());
|
||||||
gp.set_data_length(data.size());
|
gp.set_data_length(data.size());
|
||||||
gp.set_streaming_width(4);
|
gp.set_streaming_width(4);
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 48428f097659421db15d1eeac3a74fdd653db6e5
|
Subproject commit 0ae9ca921a3c59f7f5e0cad119314e65bd50c327
|
@ -29,7 +29,7 @@ end_attribute (ID 1, name "end_delay", type "UNSIGNED")
|
|||||||
tx_begin 2 6 20 ns
|
tx_begin 2 6 20 ns
|
||||||
a 0
|
a 0
|
||||||
tx_relation "PRED/SUCC" 2 1
|
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,
|
scv_tr_generator (ID 10, name "read", scv_tr_stream 9,
|
||||||
begin_attribute (ID 0, name "start_delay", type "UNSIGNED")
|
begin_attribute (ID 0, name "start_delay", type "UNSIGNED")
|
||||||
end_attribute (ID 1, name "end_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
|
tx_begin 3 10 20 ns
|
||||||
a 0
|
a 0
|
||||||
tx_relation "PRED/SUCC" 3 2
|
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.command" ENUMERATION = "tlm::TLM_READ_COMMAND"
|
||||||
tx_record_attribute 3 "trans.data" POINTER = 0
|
tx_record_attribute 3 "trans.data" POINTER = 0
|
||||||
tx_record_attribute 3 "trans.data_length" UNSIGNED = 4
|
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.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD"
|
||||||
tx_record_attribute 3 "trans.data_value" UNSIGNED = 0
|
tx_record_attribute 3 "trans.data_value" UNSIGNED = 0
|
||||||
tx_end 3 10 20 ns
|
tx_end 3 10 20 ns
|
||||||
a 0
|
a 10000
|
||||||
tx_record_attribute 2 "trans.address" UNSIGNED = 0
|
tx_record_attribute 2 "trans.address" UNSIGNED = 4
|
||||||
tx_record_attribute 2 "trans.command" ENUMERATION = "tlm::TLM_READ_COMMAND"
|
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" POINTER = 0
|
||||||
tx_record_attribute 2 "trans.data_length" UNSIGNED = 4
|
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.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD"
|
||||||
tx_record_attribute 2 "trans.data_value" UNSIGNED = 0
|
tx_record_attribute 2 "trans.data_value" UNSIGNED = 0
|
||||||
tx_end 2 6 20 ns
|
tx_end 2 6 20 ns
|
||||||
a 0
|
a 10000
|
||||||
tx_record_attribute 1 "trans.address" UNSIGNED = 268509184
|
tx_record_attribute 1 "trans.address" UNSIGNED = 201326596
|
||||||
tx_record_attribute 1 "trans.command" ENUMERATION = "tlm::TLM_READ_COMMAND"
|
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" POINTER = 0
|
||||||
tx_record_attribute 1 "trans.data_length" UNSIGNED = 4
|
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.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD"
|
||||||
tx_record_attribute 1 "trans.data_value" UNSIGNED = 0
|
tx_record_attribute 1 "trans.data_value" UNSIGNED = 0
|
||||||
tx_end 1 2 20 ns
|
tx_end 1 2 20 ns
|
||||||
a 0
|
a 10000
|
||||||
scv_tr_stream (ID 13, name "i_simple_system.i_gpio.socket.bl_t_ann", kind "TRANSACTOR")
|
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,
|
scv_tr_generator (ID 14, name "read", scv_tr_stream 13,
|
||||||
begin_attribute (ID 0, name "<anonymous>", type "ENUMERATION")
|
begin_attribute (ID 0, name "<anonymous>", type "ENUMERATION")
|
||||||
end_attribute (ID 1, name "<anonymous>", type "ENUMERATION")
|
end_attribute (ID 1, name "<anonymous>", type "ENUMERATION")
|
||||||
@ -99,7 +99,7 @@ end_attribute (ID 1, name "<anonymous>", type "ENUMERATION")
|
|||||||
)
|
)
|
||||||
tx_begin 4 14 20 ns
|
tx_begin 4 14 20 ns
|
||||||
a "tlm::TLM_READ_COMMAND"
|
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.command" ENUMERATION = "tlm::TLM_READ_COMMAND"
|
||||||
tx_record_attribute 4 "trans.data" POINTER = 0
|
tx_record_attribute 4 "trans.data" POINTER = 0
|
||||||
tx_record_attribute 4 "trans.data_length" UNSIGNED = 4
|
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.streaming_width" UNSIGNED = 4
|
||||||
tx_record_attribute 4 "trans.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD"
|
tx_record_attribute 4 "trans.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD"
|
||||||
tx_relation "PARENT/CHILD" 4 3
|
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_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,
|
scv_tr_generator (ID 18, name "read", scv_tr_stream 17,
|
||||||
begin_attribute (ID 0, name "<anonymous>", type "ENUMERATION")
|
begin_attribute (ID 0, name "<anonymous>", type "ENUMERATION")
|
||||||
@ -127,7 +125,7 @@ end_attribute (ID 1, name "<anonymous>", type "ENUMERATION")
|
|||||||
)
|
)
|
||||||
tx_begin 5 18 20 ns
|
tx_begin 5 18 20 ns
|
||||||
a "tlm::TLM_READ_COMMAND"
|
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.command" ENUMERATION = "tlm::TLM_READ_COMMAND"
|
||||||
tx_record_attribute 5 "trans.data" POINTER = 0
|
tx_record_attribute 5 "trans.data" POINTER = 0
|
||||||
tx_record_attribute 5 "trans.data_length" UNSIGNED = 4
|
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.streaming_width" UNSIGNED = 4
|
||||||
tx_record_attribute 5 "trans.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD"
|
tx_record_attribute 5 "trans.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD"
|
||||||
tx_relation "PARENT/CHILD" 5 2
|
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_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,
|
scv_tr_generator (ID 22, name "read", scv_tr_stream 21,
|
||||||
begin_attribute (ID 0, name "<anonymous>", type "ENUMERATION")
|
begin_attribute (ID 0, name "<anonymous>", type "ENUMERATION")
|
||||||
@ -155,7 +151,7 @@ end_attribute (ID 1, name "<anonymous>", type "ENUMERATION")
|
|||||||
)
|
)
|
||||||
tx_begin 6 22 20 ns
|
tx_begin 6 22 20 ns
|
||||||
a "tlm::TLM_READ_COMMAND"
|
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.command" ENUMERATION = "tlm::TLM_READ_COMMAND"
|
||||||
tx_record_attribute 6 "trans.data" POINTER = 0
|
tx_record_attribute 6 "trans.data" POINTER = 0
|
||||||
tx_record_attribute 6 "trans.data_length" UNSIGNED = 4
|
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.streaming_width" UNSIGNED = 4
|
||||||
tx_record_attribute 6 "trans.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD"
|
tx_record_attribute 6 "trans.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD"
|
||||||
tx_relation "PARENT/CHILD" 6 1
|
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"
|
a "tlm::TLM_INCOMPLETE_RESPONSE"
|
||||||
tx_begin 7 3 30 ns
|
tx_begin 7 3 30 ns
|
||||||
a 0
|
a 10000
|
||||||
tx_begin 8 7 30 ns
|
scv_tr_stream (ID 25, name "i_simple_system.i_router.intor_1.blocking", kind "TRANSACTOR")
|
||||||
a 0
|
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_relation "PRED/SUCC" 8 7
|
||||||
tx_begin 9 11 30 ns
|
scv_tr_stream (ID 29, name "i_simple_system.i_gpio.socket.blocking", kind "TRANSACTOR")
|
||||||
a 0
|
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_relation "PRED/SUCC" 9 8
|
||||||
tx_record_attribute 9 "trans.address" UNSIGNED = 0
|
tx_record_attribute 9 "trans.address" UNSIGNED = 0
|
||||||
tx_record_attribute 9 "trans.command" ENUMERATION = "tlm::TLM_WRITE_COMMAND"
|
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.streaming_width" UNSIGNED = 4
|
||||||
tx_record_attribute 9 "trans.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD"
|
tx_record_attribute 9 "trans.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD"
|
||||||
tx_record_attribute 9 "trans.data_value" UNSIGNED = 165
|
tx_record_attribute 9 "trans.data_value" UNSIGNED = 165
|
||||||
tx_end 9 11 30 ns
|
tx_end 9 31 30 ns
|
||||||
a 0
|
a 10000
|
||||||
tx_record_attribute 8 "trans.address" UNSIGNED = 0
|
tx_record_attribute 8 "trans.address" UNSIGNED = 0
|
||||||
tx_record_attribute 8 "trans.command" ENUMERATION = "tlm::TLM_WRITE_COMMAND"
|
tx_record_attribute 8 "trans.command" ENUMERATION = "tlm::TLM_WRITE_COMMAND"
|
||||||
tx_record_attribute 8 "trans.data" POINTER = 0
|
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.streaming_width" UNSIGNED = 4
|
||||||
tx_record_attribute 8 "trans.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD"
|
tx_record_attribute 8 "trans.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD"
|
||||||
tx_record_attribute 8 "trans.data_value" UNSIGNED = 165
|
tx_record_attribute 8 "trans.data_value" UNSIGNED = 165
|
||||||
tx_end 8 7 30 ns
|
tx_end 8 27 30 ns
|
||||||
a 0
|
a 10000
|
||||||
tx_record_attribute 7 "trans.address" UNSIGNED = 268509184
|
tx_record_attribute 7 "trans.address" UNSIGNED = 268509184
|
||||||
tx_record_attribute 7 "trans.command" ENUMERATION = "tlm::TLM_WRITE_COMMAND"
|
tx_record_attribute 7 "trans.command" ENUMERATION = "tlm::TLM_WRITE_COMMAND"
|
||||||
tx_record_attribute 7 "trans.data" POINTER = 0
|
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.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD"
|
||||||
tx_record_attribute 7 "trans.data_value" UNSIGNED = 165
|
tx_record_attribute 7 "trans.data_value" UNSIGNED = 165
|
||||||
tx_end 7 3 30 ns
|
tx_end 7 3 30 ns
|
||||||
a 0
|
a 10000
|
||||||
tx_begin 10 15 30 ns
|
tx_begin 10 23 40 ns
|
||||||
a "tlm::TLM_WRITE_COMMAND"
|
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.command" ENUMERATION = "tlm::TLM_WRITE_COMMAND"
|
||||||
tx_record_attribute 10 "trans.data" POINTER = 0
|
tx_record_attribute 10 "trans.data" POINTER = 0
|
||||||
tx_record_attribute 10 "trans.data_length" UNSIGNED = 4
|
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.byte_enable_length" UNSIGNED = 0
|
||||||
tx_record_attribute 10 "trans.streaming_width" UNSIGNED = 4
|
tx_record_attribute 10 "trans.streaming_width" UNSIGNED = 4
|
||||||
tx_record_attribute 10 "trans.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD"
|
tx_record_attribute 10 "trans.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD"
|
||||||
tx_relation "PARENT/CHILD" 10 9
|
tx_relation "PARENT/CHILD" 10 7
|
||||||
tx_end 10 15 30 ns
|
tx_end 10 23 40 ns
|
||||||
a "tlm::TLM_OK_RESPONSE"
|
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 "<anonymous>", type "ENUMERATION")
|
||||||
|
end_attribute (ID 1, name "<anonymous>", type "ENUMERATION")
|
||||||
|
)
|
||||||
|
scv_tr_generator (ID 35, name "write", scv_tr_stream 33,
|
||||||
|
begin_attribute (ID 0, name "<anonymous>", type "ENUMERATION")
|
||||||
|
end_attribute (ID 1, name "<anonymous>", type "ENUMERATION")
|
||||||
|
)
|
||||||
|
scv_tr_generator (ID 36, name "ignore", scv_tr_stream 33,
|
||||||
|
begin_attribute (ID 0, name "<anonymous>", type "ENUMERATION")
|
||||||
|
end_attribute (ID 1, name "<anonymous>", type "ENUMERATION")
|
||||||
|
)
|
||||||
|
tx_begin 11 35 40 ns
|
||||||
a "tlm::TLM_WRITE_COMMAND"
|
a "tlm::TLM_WRITE_COMMAND"
|
||||||
tx_record_attribute 11 "trans.address" UNSIGNED = 0
|
tx_record_attribute 11 "trans.address" UNSIGNED = 0
|
||||||
tx_record_attribute 11 "trans.command" ENUMERATION = "tlm::TLM_WRITE_COMMAND"
|
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.byte_enable_length" UNSIGNED = 0
|
||||||
tx_record_attribute 11 "trans.streaming_width" UNSIGNED = 4
|
tx_record_attribute 11 "trans.streaming_width" UNSIGNED = 4
|
||||||
tx_record_attribute 11 "trans.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD"
|
tx_record_attribute 11 "trans.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD"
|
||||||
tx_relation "PARENT/CHILD" 11 8
|
tx_relation "PARENT/CHILD" 11 9
|
||||||
tx_end 11 19 30 ns
|
tx_end 11 35 40 ns
|
||||||
a "tlm::TLM_OK_RESPONSE"
|
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 "<anonymous>", type "ENUMERATION")
|
||||||
|
end_attribute (ID 1, name "<anonymous>", type "ENUMERATION")
|
||||||
|
)
|
||||||
|
scv_tr_generator (ID 39, name "write", scv_tr_stream 37,
|
||||||
|
begin_attribute (ID 0, name "<anonymous>", type "ENUMERATION")
|
||||||
|
end_attribute (ID 1, name "<anonymous>", type "ENUMERATION")
|
||||||
|
)
|
||||||
|
scv_tr_generator (ID 40, name "ignore", scv_tr_stream 37,
|
||||||
|
begin_attribute (ID 0, name "<anonymous>", type "ENUMERATION")
|
||||||
|
end_attribute (ID 1, name "<anonymous>", type "ENUMERATION")
|
||||||
|
)
|
||||||
|
tx_begin 12 39 40 ns
|
||||||
a "tlm::TLM_WRITE_COMMAND"
|
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.command" ENUMERATION = "tlm::TLM_WRITE_COMMAND"
|
||||||
tx_record_attribute 12 "trans.data" POINTER = 0
|
tx_record_attribute 12 "trans.data" POINTER = 0
|
||||||
tx_record_attribute 12 "trans.data_length" UNSIGNED = 4
|
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.byte_enable_length" UNSIGNED = 0
|
||||||
tx_record_attribute 12 "trans.streaming_width" UNSIGNED = 4
|
tx_record_attribute 12 "trans.streaming_width" UNSIGNED = 4
|
||||||
tx_record_attribute 12 "trans.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD"
|
tx_record_attribute 12 "trans.gp_option" ENUMERATION = "tlm::TLM_MIN_PAYLOAD"
|
||||||
tx_relation "PARENT/CHILD" 12 7
|
tx_relation "PARENT/CHILD" 12 8
|
||||||
tx_end 12 23 30 ns
|
tx_end 12 39 40 ns
|
||||||
a "tlm::TLM_OK_RESPONSE"
|
a "tlm::TLM_OK_RESPONSE"
|
||||||
|
Loading…
Reference in New Issue
Block a user