ipxact-ruby 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. data/.autotest +15 -0
  2. data/.gitignore +2 -0
  3. data/README.html +89 -0
  4. data/README.mdown +91 -0
  5. data/Rakefile +31 -0
  6. data/VERSION +1 -0
  7. data/autotest/discover.rb +17 -0
  8. data/lib/ipxact.rb +263 -0
  9. data/lib/ipxact/component.rb +235 -0
  10. data/lib/ipxact/parser.rb +27 -0
  11. data/lib/ipxact/parser/bus_data_parser.rb +229 -0
  12. data/lib/ipxact/parser/component_data_parser.rb +309 -0
  13. data/lib/ipxact/parser/platform_data_parser.rb +63 -0
  14. data/lib/ipxact/pathfinder/graph_pathfinder.rb +191 -0
  15. data/lib/ipxact/platform.rb +43 -0
  16. data/schemas/abstractionDefinition.xsd +332 -0
  17. data/schemas/abstractor.xsd +156 -0
  18. data/schemas/autoConfigure.xsd +226 -0
  19. data/schemas/busDefinition.xsd +99 -0
  20. data/schemas/busInterface.xsd +640 -0
  21. data/schemas/commonStructures.xsd +189 -0
  22. data/schemas/component.xsd +253 -0
  23. data/schemas/configurable.xsd +82 -0
  24. data/schemas/constraints.xsd +283 -0
  25. data/schemas/design.xsd +105 -0
  26. data/schemas/designConfig.xsd +144 -0
  27. data/schemas/file.xsd +560 -0
  28. data/schemas/fileType.xsd +86 -0
  29. data/schemas/generator.xsd +240 -0
  30. data/schemas/identifier.xsd +93 -0
  31. data/schemas/index.xsd +67 -0
  32. data/schemas/memoryMap.xsd +1007 -0
  33. data/schemas/model.xsd +291 -0
  34. data/schemas/port.xsd +441 -0
  35. data/schemas/signalDrivers.xsd +220 -0
  36. data/schemas/simpleTypes.xsd +90 -0
  37. data/schemas/subInstances.xsd +256 -0
  38. data/spec/integration/bus_data_extraction_spec.rb +105 -0
  39. data/spec/integration/data_calculation_spec.rb +133 -0
  40. data/spec/integration/data_construction_spec.rb +52 -0
  41. data/spec/integration/general_spec.rb +121 -0
  42. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_initiator_port.h +135 -0
  43. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_initiator_port.tpp +247 -0
  44. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_initiator_port_base.h +189 -0
  45. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_router.h +205 -0
  46. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_router.tpp +278 -0
  47. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_slave_base.h +115 -0
  48. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_slave_base.tpp +126 -0
  49. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_target_port.h +168 -0
  50. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_target_port_base.h +133 -0
  51. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_tlm_if.h +280 -0
  52. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/user_types.h +38 -0
  53. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM1/Leon2Platform/Leon2Platform.xml +77 -0
  54. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM1/Leon2Platform/design_Leon2Platform.xml +156 -0
  55. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM1/Leon2Platform/tlmsrc/Leon2Platform.h +149 -0
  56. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM1/apbSubSystem/apbSubSystem.xml +406 -0
  57. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM1/apbSubSystem/design_apbSubSystem.xml +135 -0
  58. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM1/apbSubSystem/tlmsrc/apbSubSystem.h +133 -0
  59. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM2/Leon2Platform/Leon2Platform.xml +77 -0
  60. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM2/Leon2Platform/design_Leon2Platform.xml +157 -0
  61. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM2/Leon2Platform/tlmsrc/Leon2Platform.h +150 -0
  62. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM2/apbSubSystem/apbSubSystem.xml +422 -0
  63. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM2/apbSubSystem/designConfig_apbSubSystem.xml +79 -0
  64. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM2/apbSubSystem/design_apbSubSystem.xml +184 -0
  65. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM2/apbSubSystem/tlmsrc/apbSubSystem.h +164 -0
  66. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM3/Leon2Platform/Leon2Platform.xml +105 -0
  67. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM3/Leon2Platform/design_Leon2Platform.xml +157 -0
  68. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM3/Leon2Platform/tlmsrc/Leon2Platform.h +152 -0
  69. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM3/apbSubSystem/apbSubSystem.xml +429 -0
  70. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM3/apbSubSystem/designConfig_apbSubSystem.xml +64 -0
  71. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM3/apbSubSystem/design_apbSubSystem.xml +150 -0
  72. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM3/apbSubSystem/tlmsrc/apbSubSystem.h +167 -0
  73. data/spec/test_data/spiritconsortium.org/Leon2TLM/ahbbus/1.4/ahbbus22.xml +236 -0
  74. data/spec/test_data/spiritconsortium.org/Leon2TLM/ahbbus/1.4/tlmsrc/ahbbus.h +52 -0
  75. data/spec/test_data/spiritconsortium.org/Leon2TLM/ahbram/1.4/ahbram.xml +184 -0
  76. data/spec/test_data/spiritconsortium.org/Leon2TLM/ahbram/1.4/tlmsrc/ahbram.cc +93 -0
  77. data/spec/test_data/spiritconsortium.org/Leon2TLM/ahbram/1.4/tlmsrc/ahbram.h +77 -0
  78. data/spec/test_data/spiritconsortium.org/Leon2TLM/apbbus/1.4/apbbus8.xml +544 -0
  79. data/spec/test_data/spiritconsortium.org/Leon2TLM/apbbus/1.4/tlmsrc/apbbus.h +55 -0
  80. data/spec/test_data/spiritconsortium.org/Leon2TLM/apbmst/1.4/apbmst.xml +209 -0
  81. data/spec/test_data/spiritconsortium.org/Leon2TLM/apbmst/1.4/tlmsrc/apbmst.h +53 -0
  82. data/spec/test_data/spiritconsortium.org/Leon2TLM/apbram/1.0/apbram.xml +395 -0
  83. data/spec/test_data/spiritconsortium.org/Leon2TLM/apbram/1.0/hdlsrc/apbram.cc +89 -0
  84. data/spec/test_data/spiritconsortium.org/Leon2TLM/apbram/1.0/hdlsrc/apbram.h +69 -0
  85. data/spec/test_data/spiritconsortium.org/Leon2TLM/apbram/1.0/hdlsrc/apbram.v +82 -0
  86. data/spec/test_data/spiritconsortium.org/Leon2TLM/apbram/1.0/hdlsrc/apbram.vhd +132 -0
  87. data/spec/test_data/spiritconsortium.org/Leon2TLM/cgu/1.4/cgu.xml +686 -0
  88. data/spec/test_data/spiritconsortium.org/Leon2TLM/cgu/1.4/tlmsrc/cgu.cc +121 -0
  89. data/spec/test_data/spiritconsortium.org/Leon2TLM/cgu/1.4/tlmsrc/cgu.h +81 -0
  90. data/spec/test_data/spiritconsortium.org/Leon2TLM/cgu/1.5/cgu.xml +707 -0
  91. data/spec/test_data/spiritconsortium.org/Leon2TLM/cgu/1.5/tlmsrc/cgu.cc +121 -0
  92. data/spec/test_data/spiritconsortium.org/Leon2TLM/cgu/1.5/tlmsrc/cgu.h +81 -0
  93. data/spec/test_data/spiritconsortium.org/Leon2TLM/dma/1.4/dma.xml +272 -0
  94. data/spec/test_data/spiritconsortium.org/Leon2TLM/dma/1.4/tlmsrc/dma.cc +230 -0
  95. data/spec/test_data/spiritconsortium.org/Leon2TLM/dma/1.4/tlmsrc/dma.h +116 -0
  96. data/spec/test_data/spiritconsortium.org/Leon2TLM/irqctrl/1.4/irqctrl.xml +530 -0
  97. data/spec/test_data/spiritconsortium.org/Leon2TLM/irqctrl/1.4/tlmsrc/irqctrl.cc +211 -0
  98. data/spec/test_data/spiritconsortium.org/Leon2TLM/irqctrl/1.4/tlmsrc/irqctrl.h +108 -0
  99. data/spec/test_data/spiritconsortium.org/Leon2TLM/processor/1.4/processor.xml +423 -0
  100. data/spec/test_data/spiritconsortium.org/Leon2TLM/processor/1.4/tlmsrc/processor.cc +331 -0
  101. data/spec/test_data/spiritconsortium.org/Leon2TLM/processor/1.4/tlmsrc/processor.h +121 -0
  102. data/spec/test_data/spiritconsortium.org/Leon2TLM/pv2apb/1.0/pv2apb.xml +240 -0
  103. data/spec/test_data/spiritconsortium.org/Leon2TLM/pv2apb/1.0/tlmsrc/pv2apb.cc +153 -0
  104. data/spec/test_data/spiritconsortium.org/Leon2TLM/pv2apb/1.0/tlmsrc/pv2apb.h +77 -0
  105. data/spec/test_data/spiritconsortium.org/Leon2TLM/pv2tac/1.0/pv2tac.xml +154 -0
  106. data/spec/test_data/spiritconsortium.org/Leon2TLM/pv2tac/1.0/tlmsrc/pv2tac.cc +114 -0
  107. data/spec/test_data/spiritconsortium.org/Leon2TLM/pv2tac/1.0/tlmsrc/pv2tac.h +67 -0
  108. data/spec/test_data/spiritconsortium.org/Leon2TLM/rgu/1.4/rgu.xml +766 -0
  109. data/spec/test_data/spiritconsortium.org/Leon2TLM/rgu/1.4/tlmsrc/rgu.cc +126 -0
  110. data/spec/test_data/spiritconsortium.org/Leon2TLM/rgu/1.4/tlmsrc/rgu.h +105 -0
  111. data/spec/test_data/spiritconsortium.org/Leon2TLM/scmlAdaptor/1.0/scmlAdaptor.xml +154 -0
  112. data/spec/test_data/spiritconsortium.org/Leon2TLM/scmlAdaptor/1.0/tlmsrc/scmladaptor.cc +100 -0
  113. data/spec/test_data/spiritconsortium.org/Leon2TLM/scmlAdaptor/1.0/tlmsrc/scmladaptor.h +62 -0
  114. data/spec/test_data/spiritconsortium.org/Leon2TLM/serial_device/1.0/serial_device.xml +151 -0
  115. data/spec/test_data/spiritconsortium.org/Leon2TLM/serial_device/1.0/tlmsrc/serial_device.h +85 -0
  116. data/spec/test_data/spiritconsortium.org/Leon2TLM/timers/1.4/timers.xml +460 -0
  117. data/spec/test_data/spiritconsortium.org/Leon2TLM/timers/1.4/tlmsrc/timers.cc +201 -0
  118. data/spec/test_data/spiritconsortium.org/Leon2TLM/timers/1.4/tlmsrc/timers.h +102 -0
  119. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/inc/uart.h +152 -0
  120. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/inc/uart_fifo.h +113 -0
  121. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/inc/uart_memory_map.h +96 -0
  122. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/inc/uart_types.h +60 -0
  123. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/src/uart.cc +125 -0
  124. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/src/uart_interrupt_handler.cc +136 -0
  125. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/src/uart_register_bank.cc +129 -0
  126. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/src/uart_serial_tx_rx.cc +145 -0
  127. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/uart_scml.xml +372 -0
  128. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/include/Leon2_uart.h +216 -0
  129. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/include/def_Leon2_uart.h +34 -0
  130. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/include/tlm_field.h +72 -0
  131. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/include/tlm_register.h +129 -0
  132. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/include/tlmreg_Leon2_uart.h +133 -0
  133. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/src/Leon2_uart.cc +316 -0
  134. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/src/tlmreg_Leon2_uart.cc +197 -0
  135. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/src/user_specific_Leon2_uart.cc +146 -0
  136. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/uart_tac.xml +222 -0
  137. data/spec/unit/component_spec.rb +98 -0
  138. data/spec/unit/graph_pathfinder_spec.rb +128 -0
  139. data/spec/unit/interconnect_spec.rb +177 -0
  140. data/spec/unit/ipxact_spec.rb +69 -0
  141. data/spec/unit/platform_spec.rb +34 -0
  142. metadata +225 -0
@@ -0,0 +1,89 @@
1
+ //
2
+ // Revision: $Revision: 1506 $
3
+ // Date: $Date: 2009-04-26 01:51:56 -0500 (Sun, 26 Apr 2009) $
4
+ //
5
+ // Copyright (c) 2005, 2006, 2007, 2008, 2009 The SPIRIT Consortium.
6
+ //
7
+ // This work forms part of a deliverable of The SPIRIT Consortium.
8
+ //
9
+ // Use of these materials are governed by the legal terms and conditions
10
+ // outlined in the disclaimer available from www.spiritconsortium.org.
11
+ //
12
+ // This source file is provided on an AS IS basis. The SPIRIT
13
+ // Consortium disclaims any warranty express or implied including
14
+ // any warranty of merchantability and fitness for use for a
15
+ // particular purpose.
16
+ //
17
+ // The user of the source file shall indemnify and hold The SPIRIT
18
+ // Consortium and its members harmless from any damages or liability.
19
+ // Users are requested to provide feedback to The SPIRIT Consortium
20
+ // using either mailto:feedback@lists.spiritconsortium.org or the forms at
21
+ // http://www.spiritconsortium.org/about/contact_us/
22
+ //
23
+ // This file may be copied, and distributed, with or without
24
+ // modifications; but this notice must be included on any copy.
25
+
26
+ /*------------------------------------------------------------------------------
27
+ * Simple APB wire abstraction memory
28
+ *------------------------------------------------------------------------------*/
29
+
30
+ /*------------------------------------------------------------------------------
31
+ * Includes
32
+ *----------------------------------------------------------------------------*/
33
+ #include "apbram.h"
34
+
35
+ /*------------------------------------------------------------------------------
36
+ * Methods
37
+ *----------------------------------------------------------------------------*/
38
+ apbram::apbram( sc_module_name module_name) :
39
+ sc_module( module_name ) ,
40
+ pclk ("pclk"),
41
+ presetn ("presetn"),
42
+ psel ("psel"),
43
+ penable ("penable"),
44
+ pwrite ("pwrite"),
45
+ paddr ("paddr"),
46
+ pwdata ("pwdata"),
47
+ prdata ("prdata")
48
+ {
49
+ SC_METHOD( memory_process );
50
+ sensitive << pclk;
51
+ sensitive << presetn;
52
+ prdata.initialize(0xdeadbeef);
53
+ }
54
+
55
+ void apbram::end_of_elaboration() {
56
+ cout << name() << " constructed." << endl;
57
+ }
58
+
59
+ apbram::~apbram()
60
+ {
61
+ }
62
+
63
+ void apbram::memory_process()
64
+ {
65
+ if (presetn.read() == '0') {
66
+ // cout << name() << " reset" << endl;
67
+ for (int i=0; i<MEMORYDEPTH; i++) {
68
+ memory[i] = "00000000000000000000000000000000";
69
+ }
70
+ memory[MEMORYDEPTH] = "00000000000000000000110100001000";
71
+ } else {
72
+ if (pclk.posedge()) {
73
+
74
+ sc_uint<12> addruint = paddr.read();
75
+ int addr = addruint >> 2;
76
+ if (pwrite.read() == '1' && psel.read() == '1' && penable.read() == '1' && addr < MEMORYDEPTH) {
77
+ // cout << name() << " write addr=" << addr << endl;
78
+ memory[addr] = pwdata.read();
79
+ }
80
+ if (pwrite.read() == '0' && psel.read() == '1' && penable.read() == '1' && addr <= MEMORYDEPTH) {
81
+ sc_uint<32> datauint = memory[addr];
82
+ int data = datauint;
83
+ prdata.write(memory[addr]);
84
+ // cout << name() << " read addr=" << addr << " data=" << data << endl;
85
+ }
86
+ }
87
+ }
88
+ }
89
+
@@ -0,0 +1,69 @@
1
+ //
2
+ // Revision: $Revision: 1506 $
3
+ // Date: $Date: 2009-04-26 01:51:56 -0500 (Sun, 26 Apr 2009) $
4
+ //
5
+ // Copyright (c) 2005, 2006, 2007, 2008, 2009 The SPIRIT Consortium.
6
+ //
7
+ // This work forms part of a deliverable of The SPIRIT Consortium.
8
+ //
9
+ // Use of these materials are governed by the legal terms and conditions
10
+ // outlined in the disclaimer available from www.spiritconsortium.org.
11
+ //
12
+ // This source file is provided on an AS IS basis. The SPIRIT
13
+ // Consortium disclaims any warranty express or implied including
14
+ // any warranty of merchantability and fitness for use for a
15
+ // particular purpose.
16
+ //
17
+ // The user of the source file shall indemnify and hold The SPIRIT
18
+ // Consortium and its members harmless from any damages or liability.
19
+ // Users are requested to provide feedback to The SPIRIT Consortium
20
+ // using either mailto:feedback@lists.spiritconsortium.org or the forms at
21
+ // http://www.spiritconsortium.org/about/contact_us/
22
+ //
23
+ // This file may be copied, and distributed, with or without
24
+ // modifications; but this notice must be included on any copy.
25
+
26
+ /*------------------------------------------------------------------------------
27
+ * Simple APB wire abstraction systemC memory
28
+ * 4K byte addressSpace. address FC = ID = 0xD08
29
+ *------------------------------------------------------------------------------*/
30
+
31
+ #ifndef _APBRAM_H_
32
+ #define _APBRAM_H_
33
+
34
+ /*------------------------------------------------------------------------------
35
+ * Includes
36
+ *----------------------------------------------------------------------------*/
37
+ #include "systemc.h"
38
+
39
+ #define MEMORYDEPTH 1023
40
+ #define MEMORYDEPTHLV "001111111110"
41
+
42
+ /*------------------------------------------------------------------------------
43
+ * APBRAM
44
+ *----------------------------------------------------------------------------*/
45
+ class apbram :
46
+ public sc_module
47
+ {
48
+ public:
49
+ apbram( sc_module_name module_name);
50
+ ~apbram();
51
+ SC_HAS_PROCESS( apbram );
52
+
53
+ sc_in<sc_logic> pclk;
54
+ sc_in<sc_logic> presetn;
55
+ sc_in<sc_logic> psel;
56
+ sc_in<sc_logic> penable;
57
+ sc_in<sc_logic> pwrite;
58
+ sc_in<sc_lv<12> > paddr;
59
+ sc_in<sc_lv<32> > pwdata;
60
+ sc_out<sc_lv<32> > prdata;
61
+
62
+ private:
63
+ sc_pvector<sc_lv<32> > memory;
64
+ void end_of_elaboration();
65
+ void memory_process();
66
+ };
67
+
68
+
69
+ #endif /* _APBRAM_H_ */
@@ -0,0 +1,82 @@
1
+ //
2
+ // Revision: $Revision: 1506 $
3
+ // Date: $Date: 2009-04-26 01:51:56 -0500 (Sun, 26 Apr 2009) $
4
+ //
5
+ // Copyright (c) 2005, 2006, 2007, 2008, 2009 The SPIRIT Consortium.
6
+ //
7
+ // This work forms part of a deliverable of The SPIRIT Consortium.
8
+ //
9
+ // Use of these materials are governed by the legal terms and conditions
10
+ // outlined in the disclaimer available from www.spiritconsortium.org.
11
+ //
12
+ // This source file is provided on an AS IS basis. The SPIRIT
13
+ // Consortium disclaims any warranty express or implied including
14
+ // any warranty of merchantability and fitness for use for a
15
+ // particular purpose.
16
+ //
17
+ // The user of the source file shall indemnify and hold The SPIRIT
18
+ // Consortium and its members harmless from any damages or liability.
19
+ // Users are requested to provide feedback to The SPIRIT Consortium
20
+ // using either mailto:feedback@lists.spiritconsortium.org or the forms at
21
+ // http://www.spiritconsortium.org/about/contact_us/
22
+ //
23
+ // This file may be copied, and distributed, with or without
24
+ // modifications; this notice must be included on any copy.
25
+
26
+
27
+ // SIMPLE APB MEMORY EXAMPLE. Size = 4K - 4 bytes
28
+ //
29
+ // read only ID register at 0xFFC = 0x00000D08
30
+
31
+
32
+ `timescale 1ns/100ps
33
+ `define tQ 1ns
34
+
35
+ module rgu (
36
+ pclk,
37
+ presetn,
38
+ paddr,
39
+ pwrite,
40
+ penable,
41
+ psel,
42
+ pwdata,
43
+ prdata
44
+ );
45
+
46
+ parameter MEMORYDEPTH = 1023; // memory depth
47
+
48
+ input pclk;
49
+ input presetn;
50
+ input [11:0] paddr;
51
+ input psel;
52
+ input penable;
53
+ input pwrite;
54
+ input [31:0] pwdata;
55
+ output [31:0] prdata;
56
+
57
+
58
+ reg [31:0] memory [MEMORYDEPTH-1:0]; // memory
59
+ reg [9:0] addr;
60
+ reg [31:0] prdata;
61
+
62
+ integer i;
63
+
64
+ always @ (presetn or posedge clk) begin
65
+ if (!presetn) begin
66
+ for (i=0; i < MEMORYDEPTH; i=i+1)
67
+ memory[i] = 0;
68
+ end
69
+ else begin
70
+ addr = paddr >> 2;
71
+ if (pwrite && penable && psel && addr < MEMORYDEPTH) // Memory Write
72
+ memory[addr] = pwdata;
73
+ if (!pwrite && penable && psel && addr < MEMORYDEPTH) // Memory Read
74
+ prdata <= #(`tQ) memory[addr];
75
+ if (!pwrite && penable && psel && addr == MEMORYDEPTH) // ID register
76
+ prdata <= #(`tQ) 8'hD08;
77
+ end
78
+ end
79
+
80
+
81
+ endmodule
82
+
@@ -0,0 +1,132 @@
1
+ --
2
+ -- Revision: $Revision: 1506 $
3
+ -- Date: $Date: 2009-04-26 01:51:56 -0500 (Sun, 26 Apr 2009) $
4
+ --
5
+ -- Copyright (c) 2005, 2006, 2007, 2008, 2009 The SPIRIT Consortium.
6
+ --
7
+ -- This work forms part of a deliverable of The SPIRIT Consortium.
8
+ --
9
+ -- Use of these materials are governed by the legal terms and conditions
10
+ -- outlined in the disclaimer available from www.spiritconsortium.org.
11
+ --
12
+ -- This source file is provided on an AS IS basis. The SPIRIT
13
+ -- Consortium disclaims any warranty express or implied including
14
+ -- any warranty of merchantability and fitness for use for a
15
+ -- particular purpose.
16
+ --
17
+ -- The user of the source file shall indemnify and hold The SPIRIT
18
+ -- Consortium and its members harmless from any damages or liability.
19
+ -- Users are requested to provide feedback to The SPIRIT Consortium
20
+ -- using either mailto:feedback@lists.spiritconsortium.org or the forms at
21
+ -- http://www.spiritconsortium.org/about/contact_us/
22
+ --
23
+ -- This file may be copied, and distributed, with or without
24
+ -- modifications; this notice must be included on any copy.
25
+
26
+
27
+ -- SIMPLE APB MEMORY EXAMPLE. Size = 4K - 4 bytes
28
+ --
29
+ -- read only ID register at 0xFFC = 0x00000D08
30
+
31
+
32
+ library IEEE;
33
+ use IEEE.STD_LOGIC_1164.ALL;
34
+ use IEEE.Std_Logic_TEXTIO.all;
35
+ use IEEE.STD_LOGIC_ARITH.ALL;
36
+
37
+ entity rgu is
38
+
39
+
40
+ port (
41
+ pclk: in std_logic;
42
+ presetn: in std_logic;
43
+ paddr: in std_logic_vector(11 downto 0);
44
+ pwrite: in std_logic;
45
+ penable: in std_logic;
46
+ psel: in std_logic;
47
+ pwdata: in std_logic_vector(31 downto 0);
48
+ prdata: out std_logic_vector(31 downto 0)
49
+ );
50
+ end rgu;
51
+
52
+ -- -----------------------------------------------------------------------------
53
+ architecture rtl of rgu is
54
+ -- -----------------------------------------------------------------------------
55
+
56
+ -- Depth of the APB registers in words
57
+ constant MEMORYDEPTH: natural := 4092;
58
+
59
+ type mem_type is record
60
+ data : std_logic_vector(31 downto 0);
61
+ end record;
62
+
63
+ type mem_vec_type is array (natural range <>) of mem_type;
64
+
65
+ signal memory: mem_vec_type (MEMORYDEPTH-1 downto 0);
66
+
67
+ begin
68
+
69
+ -- ---------------------------------------------------------------------------
70
+ -- assign outputs
71
+ -- ---------------------------------------------------------------------------
72
+
73
+ -- ---------------------------------------------------------------------------
74
+ -- processes
75
+ -- ---------------------------------------------------------------------------
76
+
77
+ ReadMem: process(paddr, psel, pwrite, penable)
78
+ variable addr: natural;
79
+ begin
80
+
81
+ -- pragma translate_off
82
+ addr := 0;
83
+ if not is_x(paddr) then
84
+ -- pragma translate_on
85
+ addr := conv_integer(unsigned(paddr(11 downto 2)));
86
+ -- pragma translate_off
87
+ end if;
88
+ -- pragma translate_on
89
+
90
+ if (pwrite = '0' and psel = '1' and penable = '1') then
91
+ if addr < MEMORYDEPTH then
92
+ prdata <= memory(addr).data; -- read the memory registers
93
+ elsif addr = 1023 then
94
+ prdata <= "00000000000000000000110100001000"; -- read the ID register = 0x00000D08
95
+ else
96
+ prdata <= "00000000000000000000000000000000"; -- else read 0
97
+ end if;
98
+ end if;
99
+ end process;
100
+
101
+
102
+ WriteMem: process(pclk, presetn)
103
+ variable addr: natural;
104
+ begin
105
+
106
+ if presetn = '0' then
107
+ for addr in 0 to MEMORYDEPTH-1 loop
108
+ memory(addr).data <= "00000000000000000000000000000000";
109
+ end loop;
110
+
111
+ elsif rising_edge(pclk) then
112
+ -- pragma translate_off
113
+ addr := 0;
114
+ if not is_x(paddr) then
115
+ -- pragma translate_on
116
+ addr := conv_integer(unsigned(paddr(11 downto 2)));
117
+ -- pragma translate_off
118
+ end if;
119
+ -- pragma translate_on
120
+
121
+ -- the values are writeable but they get reset again before they are used
122
+ if (pwrite = '1' and psel = '1' and penable = '1') then
123
+ if addr < MEMORYDEPTH then
124
+ memory(addr).data <= pwdata;
125
+ end if;
126
+ end if;
127
+
128
+ end if;
129
+ end process;
130
+
131
+ end rtl;
132
+
@@ -0,0 +1,686 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ //
4
+ // Revision: $Revision: 1506 $
5
+ // Date: $Date: 2009-04-26 01:51:56 -0500 (Sun, 26 Apr 2009) $
6
+ //
7
+ // Copyright (c) 2005, 2006, 2007, 2008, 2009 The SPIRIT Consortium.
8
+ //
9
+ // This work forms part of a deliverable of The SPIRIT Consortium.
10
+ //
11
+ // Use of these materials are governed by the legal terms and conditions
12
+ // outlined in the disclaimer available from www.spiritconsortium.org.
13
+ //
14
+ // This source file is provided on an AS IS basis. The SPIRIT
15
+ // Consortium disclaims any warranty express or implied including
16
+ // any warranty of merchantability and fitness for use for a
17
+ // particular purpose.
18
+ //
19
+ // The user of the source file shall indemnify and hold The SPIRIT
20
+ // Consortium and its members harmless from any damages or liability.
21
+ // Users are requested to provide feedback to The SPIRIT Consortium
22
+ // using either mailto:feedback@lists.spiritconsortium.org or the forms at
23
+ // http://www.spiritconsortium.org/about/contact_us/
24
+ //
25
+ // This file may be copied, and distributed, with or without
26
+ // modifications; but this notice must be included on any copy.
27
+ -->
28
+ <spirit:component xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.5 http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.5/index.xsd">
29
+ <spirit:vendor>spiritconsortium.org</spirit:vendor>
30
+ <spirit:library>Leon2TLM</spirit:library>
31
+ <spirit:name>cgu</spirit:name>
32
+ <spirit:version>1.4</spirit:version>
33
+ <spirit:busInterfaces>
34
+ <spirit:busInterface>
35
+ <spirit:name>APB_Slave</spirit:name>
36
+ <spirit:busType spirit:library="AMBA2" spirit:name="APB" spirit:vendor="amba.com" spirit:version="r2p0_4"/>
37
+ <spirit:abstractionType spirit:library="abstractiondef.tlm" spirit:name="apb_pv" spirit:vendor="spiritconsortium.org" spirit:version="1.4"/>
38
+ <spirit:slave>
39
+ <spirit:memoryMapRef spirit:memoryMapRef="APB_MM"/>
40
+ </spirit:slave>
41
+ <spirit:connectionRequired>true</spirit:connectionRequired>
42
+ <spirit:portMaps>
43
+ <spirit:portMap>
44
+ <spirit:logicalPort>
45
+ <spirit:name>PV_TRANS</spirit:name>
46
+ </spirit:logicalPort>
47
+ <spirit:physicalPort>
48
+ <spirit:name>apb_slave_port</spirit:name>
49
+ </spirit:physicalPort>
50
+ </spirit:portMap>
51
+ </spirit:portMaps>
52
+ </spirit:busInterface>
53
+ <spirit:busInterface>
54
+ <spirit:name>clock0_apb0</spirit:name>
55
+ <spirit:busType spirit:library="busdef.clock" spirit:name="clock" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
56
+ <spirit:abstractionType spirit:library="busdef.clock" spirit:name="clock_rtl" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
57
+ <spirit:master/>
58
+ <spirit:portMaps>
59
+ <spirit:portMap>
60
+ <spirit:logicalPort>
61
+ <spirit:name>CLK</spirit:name>
62
+ </spirit:logicalPort>
63
+ <spirit:physicalPort>
64
+ <spirit:name>clkout</spirit:name>
65
+ <spirit:vector>
66
+ <spirit:left>0</spirit:left>
67
+ <spirit:right>0</spirit:right>
68
+ </spirit:vector>
69
+ </spirit:physicalPort>
70
+ </spirit:portMap>
71
+ </spirit:portMaps>
72
+ </spirit:busInterface>
73
+ <spirit:busInterface>
74
+ <spirit:name>clock1_apb0</spirit:name>
75
+ <spirit:busType spirit:library="busdef.clock" spirit:name="clock" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
76
+ <spirit:abstractionType spirit:library="busdef.clock" spirit:name="clock_rtl" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
77
+ <spirit:master/>
78
+ <spirit:portMaps>
79
+ <spirit:portMap>
80
+ <spirit:logicalPort>
81
+ <spirit:name>CLK</spirit:name>
82
+ </spirit:logicalPort>
83
+ <spirit:physicalPort>
84
+ <spirit:name>clkout</spirit:name>
85
+ <spirit:vector>
86
+ <spirit:left>1</spirit:left>
87
+ <spirit:right>1</spirit:right>
88
+ </spirit:vector>
89
+ </spirit:physicalPort>
90
+ </spirit:portMap>
91
+ </spirit:portMaps>
92
+ </spirit:busInterface>
93
+ <spirit:busInterface>
94
+ <spirit:name>clock2_apb0</spirit:name>
95
+ <spirit:busType spirit:library="busdef.clock" spirit:name="clock" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
96
+ <spirit:abstractionType spirit:library="busdef.clock" spirit:name="clock_rtl" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
97
+ <spirit:master/>
98
+ <spirit:portMaps>
99
+ <spirit:portMap>
100
+ <spirit:logicalPort>
101
+ <spirit:name>CLK</spirit:name>
102
+ </spirit:logicalPort>
103
+ <spirit:physicalPort>
104
+ <spirit:name>clkout</spirit:name>
105
+ <spirit:vector>
106
+ <spirit:left>2</spirit:left>
107
+ <spirit:right>2</spirit:right>
108
+ </spirit:vector>
109
+ </spirit:physicalPort>
110
+ </spirit:portMap>
111
+ </spirit:portMaps>
112
+ </spirit:busInterface>
113
+ <spirit:busInterface>
114
+ <spirit:name>clock3_apb0</spirit:name>
115
+ <spirit:busType spirit:library="busdef.clock" spirit:name="clock" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
116
+ <spirit:abstractionType spirit:library="busdef.clock" spirit:name="clock_rtl" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
117
+ <spirit:master/>
118
+ <spirit:portMaps>
119
+ <spirit:portMap>
120
+ <spirit:logicalPort>
121
+ <spirit:name>CLK</spirit:name>
122
+ </spirit:logicalPort>
123
+ <spirit:physicalPort>
124
+ <spirit:name>clkout</spirit:name>
125
+ <spirit:vector>
126
+ <spirit:left>3</spirit:left>
127
+ <spirit:right>3</spirit:right>
128
+ </spirit:vector>
129
+ </spirit:physicalPort>
130
+ </spirit:portMap>
131
+ </spirit:portMaps>
132
+ </spirit:busInterface>
133
+ <spirit:busInterface>
134
+ <spirit:name>clock4_apb0</spirit:name>
135
+ <spirit:busType spirit:library="busdef.clock" spirit:name="clock" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
136
+ <spirit:abstractionType spirit:library="busdef.clock" spirit:name="clock_rtl" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
137
+ <spirit:master/>
138
+ <spirit:portMaps>
139
+ <spirit:portMap>
140
+ <spirit:logicalPort>
141
+ <spirit:name>CLK</spirit:name>
142
+ </spirit:logicalPort>
143
+ <spirit:physicalPort>
144
+ <spirit:name>clkout</spirit:name>
145
+ <spirit:vector>
146
+ <spirit:left>4</spirit:left>
147
+ <spirit:right>4</spirit:right>
148
+ </spirit:vector>
149
+ </spirit:physicalPort>
150
+ </spirit:portMap>
151
+ </spirit:portMaps>
152
+ </spirit:busInterface>
153
+ <spirit:busInterface>
154
+ <spirit:name>clock5_apb0</spirit:name>
155
+ <spirit:busType spirit:library="busdef.clock" spirit:name="clock" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
156
+ <spirit:abstractionType spirit:library="busdef.clock" spirit:name="clock_rtl" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
157
+ <spirit:master/>
158
+ <spirit:portMaps>
159
+ <spirit:portMap>
160
+ <spirit:logicalPort>
161
+ <spirit:name>CLK</spirit:name>
162
+ </spirit:logicalPort>
163
+ <spirit:physicalPort>
164
+ <spirit:name>clkout</spirit:name>
165
+ <spirit:vector>
166
+ <spirit:left>5</spirit:left>
167
+ <spirit:right>5</spirit:right>
168
+ </spirit:vector>
169
+ </spirit:physicalPort>
170
+ </spirit:portMap>
171
+ </spirit:portMaps>
172
+ </spirit:busInterface>
173
+ <spirit:busInterface>
174
+ <spirit:name>clock6_apb0</spirit:name>
175
+ <spirit:busType spirit:library="busdef.clock" spirit:name="clock" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
176
+ <spirit:abstractionType spirit:library="busdef.clock" spirit:name="clock_rtl" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
177
+ <spirit:master/>
178
+ <spirit:portMaps>
179
+ <spirit:portMap>
180
+ <spirit:logicalPort>
181
+ <spirit:name>CLK</spirit:name>
182
+ </spirit:logicalPort>
183
+ <spirit:physicalPort>
184
+ <spirit:name>clkout</spirit:name>
185
+ <spirit:vector>
186
+ <spirit:left>6</spirit:left>
187
+ <spirit:right>6</spirit:right>
188
+ </spirit:vector>
189
+ </spirit:physicalPort>
190
+ </spirit:portMap>
191
+ </spirit:portMaps>
192
+ </spirit:busInterface>
193
+ <spirit:busInterface>
194
+ <spirit:name>clock7_apb0</spirit:name>
195
+ <spirit:busType spirit:library="busdef.clock" spirit:name="clock" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
196
+ <spirit:abstractionType spirit:library="busdef.clock" spirit:name="clock_rtl" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
197
+ <spirit:master/>
198
+ <spirit:portMaps>
199
+ <spirit:portMap>
200
+ <spirit:logicalPort>
201
+ <spirit:name>CLK</spirit:name>
202
+ </spirit:logicalPort>
203
+ <spirit:physicalPort>
204
+ <spirit:name>clkout</spirit:name>
205
+ <spirit:vector>
206
+ <spirit:left>7</spirit:left>
207
+ <spirit:right>7</spirit:right>
208
+ </spirit:vector>
209
+ </spirit:physicalPort>
210
+ </spirit:portMap>
211
+ </spirit:portMaps>
212
+ </spirit:busInterface>
213
+ <spirit:busInterface>
214
+ <spirit:name>clock0_ahb0</spirit:name>
215
+ <spirit:busType spirit:library="busdef.clock" spirit:name="clock" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
216
+ <spirit:abstractionType spirit:library="busdef.clock" spirit:name="clock_rtl" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
217
+ <spirit:master/>
218
+ <spirit:portMaps>
219
+ <spirit:portMap>
220
+ <spirit:logicalPort>
221
+ <spirit:name>CLK</spirit:name>
222
+ </spirit:logicalPort>
223
+ <spirit:physicalPort>
224
+ <spirit:name>clkout</spirit:name>
225
+ <spirit:vector>
226
+ <spirit:left>0</spirit:left>
227
+ <spirit:right>0</spirit:right>
228
+ </spirit:vector>
229
+ </spirit:physicalPort>
230
+ </spirit:portMap>
231
+ </spirit:portMaps>
232
+ </spirit:busInterface>
233
+ <spirit:busInterface>
234
+ <spirit:name>clock1_ahb0</spirit:name>
235
+ <spirit:busType spirit:library="busdef.clock" spirit:name="clock" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
236
+ <spirit:abstractionType spirit:library="busdef.clock" spirit:name="clock_rtl" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
237
+ <spirit:master/>
238
+ <spirit:portMaps>
239
+ <spirit:portMap>
240
+ <spirit:logicalPort>
241
+ <spirit:name>CLK</spirit:name>
242
+ </spirit:logicalPort>
243
+ <spirit:physicalPort>
244
+ <spirit:name>clkout</spirit:name>
245
+ <spirit:vector>
246
+ <spirit:left>1</spirit:left>
247
+ <spirit:right>1</spirit:right>
248
+ </spirit:vector>
249
+ </spirit:physicalPort>
250
+ </spirit:portMap>
251
+ </spirit:portMaps>
252
+ </spirit:busInterface>
253
+ <spirit:busInterface>
254
+ <spirit:name>clock2_ahb0</spirit:name>
255
+ <spirit:busType spirit:library="busdef.clock" spirit:name="clock" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
256
+ <spirit:abstractionType spirit:library="busdef.clock" spirit:name="clock_rtl" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
257
+ <spirit:master/>
258
+ <spirit:portMaps>
259
+ <spirit:portMap>
260
+ <spirit:logicalPort>
261
+ <spirit:name>CLK</spirit:name>
262
+ </spirit:logicalPort>
263
+ <spirit:physicalPort>
264
+ <spirit:name>clkout</spirit:name>
265
+ <spirit:vector>
266
+ <spirit:left>2</spirit:left>
267
+ <spirit:right>2</spirit:right>
268
+ </spirit:vector>
269
+ </spirit:physicalPort>
270
+ </spirit:portMap>
271
+ </spirit:portMaps>
272
+ </spirit:busInterface>
273
+ <spirit:busInterface>
274
+ <spirit:name>clock3_ahb0</spirit:name>
275
+ <spirit:busType spirit:library="busdef.clock" spirit:name="clock" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
276
+ <spirit:abstractionType spirit:library="busdef.clock" spirit:name="clock_rtl" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
277
+ <spirit:master/>
278
+ <spirit:portMaps>
279
+ <spirit:portMap>
280
+ <spirit:logicalPort>
281
+ <spirit:name>CLK</spirit:name>
282
+ </spirit:logicalPort>
283
+ <spirit:physicalPort>
284
+ <spirit:name>clkout</spirit:name>
285
+ <spirit:vector>
286
+ <spirit:left>3</spirit:left>
287
+ <spirit:right>3</spirit:right>
288
+ </spirit:vector>
289
+ </spirit:physicalPort>
290
+ </spirit:portMap>
291
+ </spirit:portMaps>
292
+ </spirit:busInterface>
293
+ <spirit:busInterface>
294
+ <spirit:name>clock4_ahb0</spirit:name>
295
+ <spirit:busType spirit:library="busdef.clock" spirit:name="clock" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
296
+ <spirit:abstractionType spirit:library="busdef.clock" spirit:name="clock_rtl" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
297
+ <spirit:master/>
298
+ <spirit:portMaps>
299
+ <spirit:portMap>
300
+ <spirit:logicalPort>
301
+ <spirit:name>CLK</spirit:name>
302
+ </spirit:logicalPort>
303
+ <spirit:physicalPort>
304
+ <spirit:name>clkout</spirit:name>
305
+ <spirit:vector>
306
+ <spirit:left>4</spirit:left>
307
+ <spirit:right>4</spirit:right>
308
+ </spirit:vector>
309
+ </spirit:physicalPort>
310
+ </spirit:portMap>
311
+ </spirit:portMaps>
312
+ </spirit:busInterface>
313
+ <spirit:busInterface>
314
+ <spirit:name>clock5_ahb0</spirit:name>
315
+ <spirit:busType spirit:library="busdef.clock" spirit:name="clock" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
316
+ <spirit:abstractionType spirit:library="busdef.clock" spirit:name="clock_rtl" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
317
+ <spirit:master/>
318
+ <spirit:portMaps>
319
+ <spirit:portMap>
320
+ <spirit:logicalPort>
321
+ <spirit:name>CLK</spirit:name>
322
+ </spirit:logicalPort>
323
+ <spirit:physicalPort>
324
+ <spirit:name>clkout</spirit:name>
325
+ <spirit:vector>
326
+ <spirit:left>5</spirit:left>
327
+ <spirit:right>5</spirit:right>
328
+ </spirit:vector>
329
+ </spirit:physicalPort>
330
+ </spirit:portMap>
331
+ </spirit:portMaps>
332
+ </spirit:busInterface>
333
+ <spirit:busInterface>
334
+ <spirit:name>clock6_ahb0</spirit:name>
335
+ <spirit:busType spirit:library="busdef.clock" spirit:name="clock" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
336
+ <spirit:abstractionType spirit:library="busdef.clock" spirit:name="clock_rtl" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
337
+ <spirit:master/>
338
+ <spirit:portMaps>
339
+ <spirit:portMap>
340
+ <spirit:logicalPort>
341
+ <spirit:name>CLK</spirit:name>
342
+ </spirit:logicalPort>
343
+ <spirit:physicalPort>
344
+ <spirit:name>clkout</spirit:name>
345
+ <spirit:vector>
346
+ <spirit:left>6</spirit:left>
347
+ <spirit:right>6</spirit:right>
348
+ </spirit:vector>
349
+ </spirit:physicalPort>
350
+ </spirit:portMap>
351
+ </spirit:portMaps>
352
+ </spirit:busInterface>
353
+ <spirit:busInterface>
354
+ <spirit:name>clock7_ahb0</spirit:name>
355
+ <spirit:busType spirit:library="busdef.clock" spirit:name="clock" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
356
+ <spirit:abstractionType spirit:library="busdef.clock" spirit:name="clock_rtl" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
357
+ <spirit:master/>
358
+ <spirit:portMaps>
359
+ <spirit:portMap>
360
+ <spirit:logicalPort>
361
+ <spirit:name>CLK</spirit:name>
362
+ </spirit:logicalPort>
363
+ <spirit:physicalPort>
364
+ <spirit:name>clkout</spirit:name>
365
+ <spirit:vector>
366
+ <spirit:left>7</spirit:left>
367
+ <spirit:right>7</spirit:right>
368
+ </spirit:vector>
369
+ </spirit:physicalPort>
370
+ </spirit:portMap>
371
+ </spirit:portMaps>
372
+ </spirit:busInterface>
373
+ </spirit:busInterfaces>
374
+ <spirit:memoryMaps>
375
+ <spirit:memoryMap>
376
+ <spirit:name>APB_MM</spirit:name>
377
+ <spirit:addressBlock>
378
+ <spirit:name>defaultid4490597</spirit:name>
379
+ <spirit:baseAddress>0</spirit:baseAddress>
380
+ <spirit:range spirit:format="long">4k</spirit:range>
381
+ <spirit:width spirit:id="width" spirit:format="long">32</spirit:width>
382
+ <spirit:usage>register</spirit:usage>
383
+ <spirit:register>
384
+ <spirit:name>clock0Divide</spirit:name>
385
+ <spirit:addressOffset>0x0</spirit:addressOffset>
386
+ <spirit:size>32</spirit:size>
387
+ <spirit:volatile>false</spirit:volatile>
388
+ <spirit:access>read-write</spirit:access>
389
+ <spirit:reset>
390
+ <spirit:value>0x0</spirit:value>
391
+ </spirit:reset>
392
+ <spirit:field>
393
+ <spirit:name>Reserved</spirit:name>
394
+ <spirit:description>Reserved</spirit:description>
395
+ <spirit:bitOffset>8</spirit:bitOffset>
396
+ <spirit:bitWidth>24</spirit:bitWidth>
397
+ <spirit:access>read-only</spirit:access>
398
+ </spirit:field>
399
+ <spirit:field>
400
+ <spirit:name>divide</spirit:name>
401
+ <spirit:description>Divide value for clock 0, 0=no divide, 1=divide by 2, 2=divide by 4, 3=divide by 6, ...</spirit:description>
402
+ <spirit:bitOffset>0</spirit:bitOffset>
403
+ <spirit:bitWidth>8</spirit:bitWidth>
404
+ <spirit:access>read-write</spirit:access>
405
+ </spirit:field>
406
+ </spirit:register>
407
+ <spirit:register>
408
+ <spirit:name>clock1Divide</spirit:name>
409
+ <spirit:addressOffset>0x4</spirit:addressOffset>
410
+ <spirit:size>32</spirit:size>
411
+ <spirit:volatile>false</spirit:volatile>
412
+ <spirit:access>read-write</spirit:access>
413
+ <spirit:reset>
414
+ <spirit:value>0x0</spirit:value>
415
+ </spirit:reset>
416
+ <spirit:field>
417
+ <spirit:name>Reserved</spirit:name>
418
+ <spirit:description>Reserved</spirit:description>
419
+ <spirit:bitOffset>8</spirit:bitOffset>
420
+ <spirit:bitWidth>24</spirit:bitWidth>
421
+ <spirit:access>read-only</spirit:access>
422
+ </spirit:field>
423
+ <spirit:field>
424
+ <spirit:name>divide</spirit:name>
425
+ <spirit:description>Divide value for clock 1, 0=no divide, 1=divide by 2, 2=divide by 4, 3=divide by 6, ...</spirit:description>
426
+ <spirit:bitOffset>0</spirit:bitOffset>
427
+ <spirit:bitWidth>8</spirit:bitWidth>
428
+ <spirit:access>read-write</spirit:access>
429
+ </spirit:field>
430
+ </spirit:register>
431
+ <spirit:register>
432
+ <spirit:name>clock2Divide</spirit:name>
433
+ <spirit:addressOffset>0x8</spirit:addressOffset>
434
+ <spirit:size>32</spirit:size>
435
+ <spirit:volatile>false</spirit:volatile>
436
+ <spirit:access>read-write</spirit:access>
437
+ <spirit:reset>
438
+ <spirit:value>0x0</spirit:value>
439
+ </spirit:reset>
440
+ <spirit:field>
441
+ <spirit:name>Reserved</spirit:name>
442
+ <spirit:description>Reserved</spirit:description>
443
+ <spirit:bitOffset>8</spirit:bitOffset>
444
+ <spirit:bitWidth>24</spirit:bitWidth>
445
+ <spirit:access>read-only</spirit:access>
446
+ </spirit:field>
447
+ <spirit:field>
448
+ <spirit:name>divide</spirit:name>
449
+ <spirit:description>Divide value for clock 2, 0=no divide, 1=divide by 2, 2=divide by 4, 3=divide by 6, ...</spirit:description>
450
+ <spirit:bitOffset>0</spirit:bitOffset>
451
+ <spirit:bitWidth>8</spirit:bitWidth>
452
+ <spirit:access>read-write</spirit:access>
453
+ </spirit:field>
454
+ </spirit:register>
455
+ <spirit:register>
456
+ <spirit:name>clock3Divide</spirit:name>
457
+ <spirit:addressOffset>0xC</spirit:addressOffset>
458
+ <spirit:size>32</spirit:size>
459
+ <spirit:volatile>false</spirit:volatile>
460
+ <spirit:access>read-write</spirit:access>
461
+ <spirit:reset>
462
+ <spirit:value>0x0</spirit:value>
463
+ </spirit:reset>
464
+ <spirit:field>
465
+ <spirit:name>Reserved</spirit:name>
466
+ <spirit:description>Reserved</spirit:description>
467
+ <spirit:bitOffset>8</spirit:bitOffset>
468
+ <spirit:bitWidth>24</spirit:bitWidth>
469
+ <spirit:access>read-only</spirit:access>
470
+ </spirit:field>
471
+ <spirit:field>
472
+ <spirit:name>divide</spirit:name>
473
+ <spirit:description>Divide value for clock 3, 0=no divide, 1=divide by 2, 2=divide by 4, 3=divide by 6, ...</spirit:description>
474
+ <spirit:bitOffset>0</spirit:bitOffset>
475
+ <spirit:bitWidth>8</spirit:bitWidth>
476
+ <spirit:access>read-write</spirit:access>
477
+ </spirit:field>
478
+ </spirit:register>
479
+ <spirit:register>
480
+ <spirit:name>clock4Divide</spirit:name>
481
+ <spirit:addressOffset>0x10</spirit:addressOffset>
482
+ <spirit:size>32</spirit:size>
483
+ <spirit:volatile>false</spirit:volatile>
484
+ <spirit:access>read-write</spirit:access>
485
+ <spirit:reset>
486
+ <spirit:value>0x0</spirit:value>
487
+ </spirit:reset>
488
+ <spirit:field>
489
+ <spirit:name>Reserved</spirit:name>
490
+ <spirit:description>Reserved</spirit:description>
491
+ <spirit:bitOffset>8</spirit:bitOffset>
492
+ <spirit:bitWidth>24</spirit:bitWidth>
493
+ <spirit:access>read-only</spirit:access>
494
+ </spirit:field>
495
+ <spirit:field>
496
+ <spirit:name>divide</spirit:name>
497
+ <spirit:description>Divide value for clock 4, 0=no divide, 1=divide by 2, 2=divide by 4, 3=divide by 6, ...</spirit:description>
498
+ <spirit:bitOffset>0</spirit:bitOffset>
499
+ <spirit:bitWidth>8</spirit:bitWidth>
500
+ <spirit:access>read-write</spirit:access>
501
+ </spirit:field>
502
+ </spirit:register>
503
+ <spirit:register>
504
+ <spirit:name>clock5Divide</spirit:name>
505
+ <spirit:addressOffset>0x14</spirit:addressOffset>
506
+ <spirit:size>32</spirit:size>
507
+ <spirit:volatile>false</spirit:volatile>
508
+ <spirit:access>read-write</spirit:access>
509
+ <spirit:reset>
510
+ <spirit:value>0x0</spirit:value>
511
+ </spirit:reset>
512
+ <spirit:field>
513
+ <spirit:name>Reserved</spirit:name>
514
+ <spirit:description>Reserved</spirit:description>
515
+ <spirit:bitOffset>8</spirit:bitOffset>
516
+ <spirit:bitWidth>24</spirit:bitWidth>
517
+ <spirit:access>read-only</spirit:access>
518
+ </spirit:field>
519
+ <spirit:field>
520
+ <spirit:name>divide</spirit:name>
521
+ <spirit:description>Divide value for clock 5, 0=no divide, 1=divide by 2, 2=divide by 4, 3=divide by 6, ...</spirit:description>
522
+ <spirit:bitOffset>0</spirit:bitOffset>
523
+ <spirit:bitWidth>8</spirit:bitWidth>
524
+ <spirit:access>read-write</spirit:access>
525
+ </spirit:field>
526
+ </spirit:register>
527
+ <spirit:register>
528
+ <spirit:name>clock6Divide</spirit:name>
529
+ <spirit:addressOffset>0x18</spirit:addressOffset>
530
+ <spirit:size>32</spirit:size>
531
+ <spirit:volatile>false</spirit:volatile>
532
+ <spirit:access>read-write</spirit:access>
533
+ <spirit:reset>
534
+ <spirit:value>0x0</spirit:value>
535
+ </spirit:reset>
536
+ <spirit:field>
537
+ <spirit:name>Reserved</spirit:name>
538
+ <spirit:description>Reserved</spirit:description>
539
+ <spirit:bitOffset>8</spirit:bitOffset>
540
+ <spirit:bitWidth>24</spirit:bitWidth>
541
+ <spirit:access>read-only</spirit:access>
542
+ </spirit:field>
543
+ <spirit:field>
544
+ <spirit:name>divide</spirit:name>
545
+ <spirit:description>Divide value for clock 6, 0=no divide, 1=divide by 2, 2=divide by 4, 3=divide by 6, ...</spirit:description>
546
+ <spirit:bitOffset>0</spirit:bitOffset>
547
+ <spirit:bitWidth>8</spirit:bitWidth>
548
+ <spirit:access>read-write</spirit:access>
549
+ </spirit:field>
550
+ </spirit:register>
551
+ <spirit:register>
552
+ <spirit:name>clock7Divide</spirit:name>
553
+ <spirit:addressOffset>0x1C</spirit:addressOffset>
554
+ <spirit:size>32</spirit:size>
555
+ <spirit:volatile>false</spirit:volatile>
556
+ <spirit:access>read-write</spirit:access>
557
+ <spirit:reset>
558
+ <spirit:value>0x0</spirit:value>
559
+ </spirit:reset>
560
+ <spirit:field>
561
+ <spirit:name>Reserved</spirit:name>
562
+ <spirit:description>Reserved</spirit:description>
563
+ <spirit:bitOffset>8</spirit:bitOffset>
564
+ <spirit:bitWidth>24</spirit:bitWidth>
565
+ <spirit:access>read-only</spirit:access>
566
+ </spirit:field>
567
+ <spirit:field>
568
+ <spirit:name>divide</spirit:name>
569
+ <spirit:description>Divide value for clock 7, 0=no divide, 1=divide by 2, 2=divide by 4, 3=divide by 6, ...</spirit:description>
570
+ <spirit:bitOffset>0</spirit:bitOffset>
571
+ <spirit:bitWidth>8</spirit:bitWidth>
572
+ <spirit:access>read-write</spirit:access>
573
+ </spirit:field>
574
+ </spirit:register>
575
+ <spirit:register>
576
+ <spirit:name>IDReg</spirit:name>
577
+ <spirit:description>ID register</spirit:description>
578
+ <spirit:addressOffset>0xFFC</spirit:addressOffset>
579
+ <spirit:size>32</spirit:size>
580
+ <spirit:access>read-only</spirit:access>
581
+ <spirit:reset>
582
+ <spirit:value>0x00000D00</spirit:value>
583
+ </spirit:reset>
584
+ <spirit:field>
585
+ <spirit:name>ID</spirit:name>
586
+ <spirit:description>ID Field</spirit:description>
587
+ <spirit:bitOffset>0</spirit:bitOffset>
588
+ <spirit:bitWidth>32</spirit:bitWidth>
589
+ <spirit:access>read-only</spirit:access>
590
+ </spirit:field>
591
+ </spirit:register>
592
+ </spirit:addressBlock>
593
+ </spirit:memoryMap>
594
+ </spirit:memoryMaps>
595
+ <spirit:model>
596
+ <spirit:views>
597
+ <spirit:view>
598
+ <spirit:name>TLM_PV</spirit:name>
599
+ <spirit:envIdentifier>:*Simulation:</spirit:envIdentifier>
600
+ <spirit:language>systemc</spirit:language>
601
+ <spirit:modelName>cgu</spirit:modelName>
602
+ <spirit:fileSetRef>
603
+ <spirit:localName>sourceCode</spirit:localName>
604
+ </spirit:fileSetRef>
605
+ </spirit:view>
606
+ </spirit:views>
607
+ <spirit:ports>
608
+ <spirit:port>
609
+ <spirit:name>apb_slave_port</spirit:name>
610
+ <spirit:transactional>
611
+ <spirit:transTypeDef>
612
+ <spirit:typeName>pv_target_port</spirit:typeName>
613
+ <spirit:typeDefinition>pv_target_port.h</spirit:typeDefinition>
614
+ </spirit:transTypeDef>
615
+ <spirit:service>
616
+ <spirit:initiative>provides</spirit:initiative>
617
+ <spirit:serviceTypeDefs>
618
+ <spirit:serviceTypeDef>
619
+ <spirit:typeName spirit:implicit="true">OSCI_TLM_PV</spirit:typeName>
620
+ <spirit:parameters>
621
+ <spirit:parameter>
622
+ <spirit:name>typedef1</spirit:name>
623
+ <spirit:value>ADDRESS_TYPE</spirit:value>
624
+ </spirit:parameter>
625
+ <spirit:parameter>
626
+ <spirit:name>typedef2</spirit:name>
627
+ <spirit:value>DATA_TYPE</spirit:value>
628
+ </spirit:parameter>
629
+ </spirit:parameters>
630
+ </spirit:serviceTypeDef>
631
+ </spirit:serviceTypeDefs>
632
+ </spirit:service>
633
+ </spirit:transactional>
634
+ </spirit:port>
635
+ <spirit:port>
636
+ <spirit:name>clkout</spirit:name>
637
+ <spirit:wire>
638
+ <spirit:direction>out</spirit:direction>
639
+ <spirit:vector>
640
+ <spirit:left>7</spirit:left>
641
+ <spirit:right>0</spirit:right>
642
+ </spirit:vector>
643
+ <spirit:wireTypeDefs>
644
+ <spirit:wireTypeDef>
645
+ <spirit:typeName>sc_logic</spirit:typeName>
646
+ <spirit:typeDefinition>systemc.h</spirit:typeDefinition>
647
+ <spirit:viewNameRef>TLM_PV</spirit:viewNameRef>
648
+ </spirit:wireTypeDef>
649
+ </spirit:wireTypeDefs>
650
+ </spirit:wire>
651
+ </spirit:port>
652
+ </spirit:ports>
653
+ </spirit:model>
654
+ <spirit:fileSets>
655
+ <spirit:fileSet>
656
+ <spirit:name>sourceCode</spirit:name>
657
+ <spirit:file>
658
+ <spirit:name>tlmsrc/cgu.cc</spirit:name>
659
+ <spirit:fileType>systemCSource</spirit:fileType>
660
+ <spirit:dependency>tlmsrc</spirit:dependency>
661
+ </spirit:file>
662
+ <spirit:file>
663
+ <spirit:name>tlmsrc/cgu.h</spirit:name>
664
+ <spirit:fileType>systemCSource</spirit:fileType>
665
+ <spirit:isIncludeFile spirit:externalDeclarations="true">true</spirit:isIncludeFile>
666
+ <spirit:logicalName>cgu</spirit:logicalName>
667
+ <spirit:dependency>../../PV</spirit:dependency>
668
+ </spirit:file>
669
+ <spirit:file>
670
+ <spirit:name>../../PV/pv_slave_base.h</spirit:name>
671
+ <spirit:fileType>unknown</spirit:fileType>
672
+ <spirit:isIncludeFile>true</spirit:isIncludeFile>
673
+ </spirit:file>
674
+ <spirit:file>
675
+ <spirit:name>../../PV/pv_target_port.h</spirit:name>
676
+ <spirit:fileType>unknown</spirit:fileType>
677
+ <spirit:isIncludeFile>true</spirit:isIncludeFile>
678
+ </spirit:file>
679
+ <spirit:file>
680
+ <spirit:name>../../PV/user_types.h</spirit:name>
681
+ <spirit:fileType>unknown</spirit:fileType>
682
+ <spirit:isIncludeFile>true</spirit:isIncludeFile>
683
+ </spirit:file>
684
+ </spirit:fileSet>
685
+ </spirit:fileSets>
686
+ </spirit:component>