summaryrefslogtreecommitdiff
path: root/src/arch/arm/fastmodel/GIC/GIC.lisa
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/arm/fastmodel/GIC/GIC.lisa')
-rw-r--r--src/arch/arm/fastmodel/GIC/GIC.lisa756
1 files changed, 756 insertions, 0 deletions
diff --git a/src/arch/arm/fastmodel/GIC/GIC.lisa b/src/arch/arm/fastmodel/GIC/GIC.lisa
new file mode 100644
index 000000000..b15c9ef5e
--- /dev/null
+++ b/src/arch/arm/fastmodel/GIC/GIC.lisa
@@ -0,0 +1,756 @@
+/*
+ * Copyright 2019 Google Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met: redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer;
+ * 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;
+ * neither the name of the copyright holders 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
+ * OWNER 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.
+ *
+ * Authors: Gabe Black
+ * Chun-Chen TK Hsu
+ */
+
+protocol AMBAPVPPICommand
+{
+ properties
+ {
+ sc_master_port_class_name =
+ "amba_pv::signal_master_port<FastModel::PPICommand>";
+ sc_slave_base_class_name =
+ "amba_pv::signal_slave_base<FastModel::PPICommand>";
+ sc_slave_export_class_name =
+ "amba_pv::signal_slave_export<FastModel::PPICommand>";
+ }
+
+ includes
+ {
+ #include <amba_pv.h>
+ #include "arch/arm/fastmodel/GIC/commands.hh"
+ }
+
+ slave behavior set_state(
+ int export_id, const FastModel::PPICommand &value);
+}
+
+protocol AMBAPVSPICommand
+{
+ properties
+ {
+ sc_master_port_class_name =
+ "amba_pv::signal_master_port<FastModel::SPICommand>";
+ sc_slave_base_class_name =
+ "amba_pv::signal_slave_base<FastModel::SPICommand>";
+ sc_slave_export_class_name =
+ "amba_pv::signal_slave_export<FastModel::SPICommand>";
+ }
+
+ includes
+ {
+ #include <amba_pv.h>
+ #include "arch/arm/fastmodel/GIC/commands.hh"
+ }
+
+ slave behavior set_state(
+ int export_id, const FastModel::SPICommand &value);
+}
+
+component GIC
+{
+ composition
+ {
+ gic : GIC_IRI();
+
+ // Bridges
+ // For the main interface with memory.
+ mem_out : PVBus2AMBAPV();
+ mem_in : AMBAPV2PVBus();
+
+ // For the CPU interfaces.
+ gic_gic2pv : GICv3CommsPVBus();
+ gic_pv2amba : PVBus2AMBAPV();
+ gic_amba2pv : AMBAPV2PVBus();
+
+ // Adapters for CPU-to-GIC signals
+ cnthpirqBridge : AMBAPVSignal2SGSignal();
+ cnthvirqBridge : AMBAPVSignal2SGSignal();
+ cntpnsirqBridge : AMBAPVSignal2SGSignal();
+ cntpsirqBridge : AMBAPVSignal2SGSignal();
+ cntvirqBridge : AMBAPVSignal2SGSignal();
+ commirqBridge : AMBAPVSignal2SGSignal();
+ ctidbgirqBridge : AMBAPVSignal2SGSignal();
+ pmuirqBridge : AMBAPVSignal2SGSignal();
+ vcpumntirqBridge : AMBAPVSignal2SGSignal();
+ }
+
+ connection
+ {
+ // For the main interface with memory.
+ gic.pvbus_m => mem_out.pvbus_s;
+ mem_out.amba_pv_m => self.amba_m;
+ self.amba_s => mem_in.amba_pv_s;
+ mem_in.pvbus_m => gic.pvbus_s;
+
+ // For the CPU interface.
+ gic.redistributor_m => gic_gic2pv.distributor_s;
+ gic_gic2pv.pvbus_m => gic_pv2amba.pvbus_s;
+ gic_pv2amba.amba_pv_m => self.redistributor_m;
+ self.redistributor_s => gic_amba2pv.amba_pv_s;
+ gic_amba2pv.pvbus_m => gic_gic2pv.pvbus_s;
+
+ // Internal ports for PPI and SPI programmatic access.
+ self.ppi_0 => gic.ppi_in_0;
+ self.ppi_1 => gic.ppi_in_1;
+ self.ppi_2 => gic.ppi_in_2;
+ self.ppi_3 => gic.ppi_in_3;
+ self.ppi_4 => gic.ppi_in_4;
+ self.ppi_5 => gic.ppi_in_5;
+ self.ppi_6 => gic.ppi_in_6;
+ self.ppi_7 => gic.ppi_in_7;
+ self.ppi_8 => gic.ppi_in_8;
+ self.ppi_9 => gic.ppi_in_9;
+ self.ppi_10 => gic.ppi_in_10;
+ self.ppi_11 => gic.ppi_in_11;
+ self.ppi_12 => gic.ppi_in_12;
+ self.ppi_13 => gic.ppi_in_13;
+ self.ppi_14 => gic.ppi_in_14;
+ self.ppi_15 => gic.ppi_in_15;
+ self.ppi_16 => gic.ppi_in_16;
+ self.ppi_17 => gic.ppi_in_17;
+ self.ppi_18 => gic.ppi_in_18;
+ self.ppi_19 => gic.ppi_in_19;
+ self.ppi_20 => gic.ppi_in_20;
+ self.ppi_21 => gic.ppi_in_21;
+ self.ppi_22 => gic.ppi_in_22;
+ self.ppi_23 => gic.ppi_in_23;
+ self.ppi_24 => gic.ppi_in_24;
+ self.ppi_25 => gic.ppi_in_25;
+ self.ppi_26 => gic.ppi_in_26;
+ self.ppi_27 => gic.ppi_in_27;
+ self.ppi_28 => gic.ppi_in_28;
+ self.ppi_29 => gic.ppi_in_29;
+ self.ppi_30 => gic.ppi_in_30;
+ self.ppi_31 => gic.ppi_in_31;
+ self.ppi_32 => gic.ppi_in_32;
+ self.ppi_33 => gic.ppi_in_33;
+ self.ppi_34 => gic.ppi_in_34;
+ self.ppi_35 => gic.ppi_in_35;
+ self.ppi_36 => gic.ppi_in_36;
+ self.ppi_37 => gic.ppi_in_37;
+ self.ppi_38 => gic.ppi_in_38;
+ self.ppi_39 => gic.ppi_in_39;
+ self.ppi_40 => gic.ppi_in_40;
+ self.ppi_41 => gic.ppi_in_41;
+ self.ppi_42 => gic.ppi_in_42;
+ self.ppi_43 => gic.ppi_in_43;
+ self.ppi_44 => gic.ppi_in_44;
+ self.ppi_45 => gic.ppi_in_45;
+ self.ppi_46 => gic.ppi_in_46;
+ self.ppi_47 => gic.ppi_in_47;
+ self.ppi_48 => gic.ppi_in_48;
+ self.ppi_49 => gic.ppi_in_49;
+ self.ppi_50 => gic.ppi_in_50;
+ self.ppi_51 => gic.ppi_in_51;
+ self.ppi_52 => gic.ppi_in_52;
+ self.ppi_53 => gic.ppi_in_53;
+ self.ppi_54 => gic.ppi_in_54;
+ self.ppi_55 => gic.ppi_in_55;
+ self.ppi_56 => gic.ppi_in_56;
+ self.ppi_57 => gic.ppi_in_57;
+ self.ppi_58 => gic.ppi_in_58;
+ self.ppi_59 => gic.ppi_in_59;
+ self.ppi_60 => gic.ppi_in_60;
+ self.ppi_61 => gic.ppi_in_61;
+ self.ppi_62 => gic.ppi_in_62;
+ self.ppi_63 => gic.ppi_in_63;
+ self.ppi_64 => gic.ppi_in_64;
+ self.ppi_65 => gic.ppi_in_65;
+ self.ppi_66 => gic.ppi_in_66;
+ self.ppi_67 => gic.ppi_in_67;
+ self.ppi_68 => gic.ppi_in_68;
+ self.ppi_69 => gic.ppi_in_69;
+ self.ppi_70 => gic.ppi_in_70;
+ self.ppi_71 => gic.ppi_in_71;
+ self.ppi_72 => gic.ppi_in_72;
+ self.ppi_73 => gic.ppi_in_73;
+ self.ppi_74 => gic.ppi_in_74;
+ self.ppi_75 => gic.ppi_in_75;
+ self.ppi_76 => gic.ppi_in_76;
+ self.ppi_77 => gic.ppi_in_77;
+ self.ppi_78 => gic.ppi_in_78;
+ self.ppi_79 => gic.ppi_in_79;
+ self.ppi_80 => gic.ppi_in_80;
+ self.ppi_81 => gic.ppi_in_81;
+ self.ppi_82 => gic.ppi_in_82;
+ self.ppi_83 => gic.ppi_in_83;
+ self.ppi_84 => gic.ppi_in_84;
+ self.ppi_85 => gic.ppi_in_85;
+ self.ppi_86 => gic.ppi_in_86;
+ self.ppi_87 => gic.ppi_in_87;
+ self.ppi_88 => gic.ppi_in_88;
+ self.ppi_89 => gic.ppi_in_89;
+ self.ppi_90 => gic.ppi_in_90;
+ self.ppi_91 => gic.ppi_in_91;
+ self.ppi_92 => gic.ppi_in_92;
+ self.ppi_93 => gic.ppi_in_93;
+ self.ppi_94 => gic.ppi_in_94;
+ self.ppi_95 => gic.ppi_in_95;
+ self.ppi_96 => gic.ppi_in_96;
+ self.ppi_97 => gic.ppi_in_97;
+ self.ppi_98 => gic.ppi_in_98;
+ self.ppi_99 => gic.ppi_in_99;
+ self.ppi_100 => gic.ppi_in_100;
+ self.ppi_101 => gic.ppi_in_101;
+ self.ppi_102 => gic.ppi_in_102;
+ self.ppi_103 => gic.ppi_in_103;
+ self.ppi_104 => gic.ppi_in_104;
+ self.ppi_105 => gic.ppi_in_105;
+ self.ppi_106 => gic.ppi_in_106;
+ self.ppi_107 => gic.ppi_in_107;
+ self.ppi_108 => gic.ppi_in_108;
+ self.ppi_109 => gic.ppi_in_109;
+ self.ppi_110 => gic.ppi_in_110;
+ self.ppi_111 => gic.ppi_in_111;
+ self.ppi_112 => gic.ppi_in_112;
+ self.ppi_113 => gic.ppi_in_113;
+ self.ppi_114 => gic.ppi_in_114;
+ self.ppi_115 => gic.ppi_in_115;
+ self.ppi_116 => gic.ppi_in_116;
+ self.ppi_117 => gic.ppi_in_117;
+ self.ppi_118 => gic.ppi_in_118;
+ self.ppi_119 => gic.ppi_in_119;
+ self.ppi_120 => gic.ppi_in_120;
+ self.ppi_121 => gic.ppi_in_121;
+ self.ppi_122 => gic.ppi_in_122;
+ self.ppi_123 => gic.ppi_in_123;
+ self.ppi_124 => gic.ppi_in_124;
+ self.ppi_125 => gic.ppi_in_125;
+ self.ppi_126 => gic.ppi_in_126;
+ self.ppi_127 => gic.ppi_in_127;
+ self.ppi_128 => gic.ppi_in_128;
+ self.ppi_129 => gic.ppi_in_129;
+ self.ppi_130 => gic.ppi_in_130;
+ self.ppi_131 => gic.ppi_in_131;
+ self.ppi_132 => gic.ppi_in_132;
+ self.ppi_133 => gic.ppi_in_133;
+ self.ppi_134 => gic.ppi_in_134;
+ self.ppi_135 => gic.ppi_in_135;
+ self.ppi_136 => gic.ppi_in_136;
+ self.ppi_137 => gic.ppi_in_137;
+ self.ppi_138 => gic.ppi_in_138;
+ self.ppi_139 => gic.ppi_in_139;
+ self.ppi_140 => gic.ppi_in_140;
+ self.ppi_141 => gic.ppi_in_141;
+ self.ppi_142 => gic.ppi_in_142;
+ self.ppi_143 => gic.ppi_in_143;
+ self.ppi_144 => gic.ppi_in_144;
+ self.ppi_145 => gic.ppi_in_145;
+ self.ppi_146 => gic.ppi_in_146;
+ self.ppi_147 => gic.ppi_in_147;
+ self.ppi_148 => gic.ppi_in_148;
+ self.ppi_149 => gic.ppi_in_149;
+ self.ppi_150 => gic.ppi_in_150;
+ self.ppi_151 => gic.ppi_in_151;
+ self.ppi_152 => gic.ppi_in_152;
+ self.ppi_153 => gic.ppi_in_153;
+ self.ppi_154 => gic.ppi_in_154;
+ self.ppi_155 => gic.ppi_in_155;
+ self.ppi_156 => gic.ppi_in_156;
+ self.ppi_157 => gic.ppi_in_157;
+ self.ppi_158 => gic.ppi_in_158;
+ self.ppi_159 => gic.ppi_in_159;
+ self.ppi_160 => gic.ppi_in_160;
+ self.ppi_161 => gic.ppi_in_161;
+ self.ppi_162 => gic.ppi_in_162;
+ self.ppi_163 => gic.ppi_in_163;
+ self.ppi_164 => gic.ppi_in_164;
+ self.ppi_165 => gic.ppi_in_165;
+ self.ppi_166 => gic.ppi_in_166;
+ self.ppi_167 => gic.ppi_in_167;
+ self.ppi_168 => gic.ppi_in_168;
+ self.ppi_169 => gic.ppi_in_169;
+ self.ppi_170 => gic.ppi_in_170;
+ self.ppi_171 => gic.ppi_in_171;
+ self.ppi_172 => gic.ppi_in_172;
+ self.ppi_173 => gic.ppi_in_173;
+ self.ppi_174 => gic.ppi_in_174;
+ self.ppi_175 => gic.ppi_in_175;
+ self.ppi_176 => gic.ppi_in_176;
+ self.ppi_177 => gic.ppi_in_177;
+ self.ppi_178 => gic.ppi_in_178;
+ self.ppi_179 => gic.ppi_in_179;
+ self.ppi_180 => gic.ppi_in_180;
+ self.ppi_181 => gic.ppi_in_181;
+ self.ppi_182 => gic.ppi_in_182;
+ self.ppi_183 => gic.ppi_in_183;
+ self.ppi_184 => gic.ppi_in_184;
+ self.ppi_185 => gic.ppi_in_185;
+ self.ppi_186 => gic.ppi_in_186;
+ self.ppi_187 => gic.ppi_in_187;
+ self.ppi_188 => gic.ppi_in_188;
+ self.ppi_189 => gic.ppi_in_189;
+ self.ppi_190 => gic.ppi_in_190;
+ self.ppi_191 => gic.ppi_in_191;
+ self.ppi_192 => gic.ppi_in_192;
+ self.ppi_193 => gic.ppi_in_193;
+ self.ppi_194 => gic.ppi_in_194;
+ self.ppi_195 => gic.ppi_in_195;
+ self.ppi_196 => gic.ppi_in_196;
+ self.ppi_197 => gic.ppi_in_197;
+ self.ppi_198 => gic.ppi_in_198;
+ self.ppi_199 => gic.ppi_in_199;
+ self.ppi_200 => gic.ppi_in_200;
+ self.ppi_201 => gic.ppi_in_201;
+ self.ppi_202 => gic.ppi_in_202;
+ self.ppi_203 => gic.ppi_in_203;
+ self.ppi_204 => gic.ppi_in_204;
+ self.ppi_205 => gic.ppi_in_205;
+ self.ppi_206 => gic.ppi_in_206;
+ self.ppi_207 => gic.ppi_in_207;
+ self.ppi_208 => gic.ppi_in_208;
+ self.ppi_209 => gic.ppi_in_209;
+ self.ppi_210 => gic.ppi_in_210;
+ self.ppi_211 => gic.ppi_in_211;
+ self.ppi_212 => gic.ppi_in_212;
+ self.ppi_213 => gic.ppi_in_213;
+ self.ppi_214 => gic.ppi_in_214;
+ self.ppi_215 => gic.ppi_in_215;
+ self.ppi_216 => gic.ppi_in_216;
+ self.ppi_217 => gic.ppi_in_217;
+ self.ppi_218 => gic.ppi_in_218;
+ self.ppi_219 => gic.ppi_in_219;
+ self.ppi_220 => gic.ppi_in_220;
+ self.ppi_221 => gic.ppi_in_221;
+ self.ppi_222 => gic.ppi_in_222;
+ self.ppi_223 => gic.ppi_in_223;
+ self.ppi_224 => gic.ppi_in_224;
+ self.ppi_225 => gic.ppi_in_225;
+ self.ppi_226 => gic.ppi_in_226;
+ self.ppi_227 => gic.ppi_in_227;
+ self.ppi_228 => gic.ppi_in_228;
+ self.ppi_229 => gic.ppi_in_229;
+ self.ppi_230 => gic.ppi_in_230;
+ self.ppi_231 => gic.ppi_in_231;
+ self.ppi_232 => gic.ppi_in_232;
+ self.ppi_233 => gic.ppi_in_233;
+ self.ppi_234 => gic.ppi_in_234;
+ self.ppi_235 => gic.ppi_in_235;
+ self.ppi_236 => gic.ppi_in_236;
+ self.ppi_237 => gic.ppi_in_237;
+ self.ppi_238 => gic.ppi_in_238;
+ self.ppi_239 => gic.ppi_in_239;
+ self.ppi_240 => gic.ppi_in_240;
+ self.ppi_241 => gic.ppi_in_241;
+ self.ppi_242 => gic.ppi_in_242;
+ self.ppi_243 => gic.ppi_in_243;
+ self.ppi_244 => gic.ppi_in_244;
+ self.ppi_245 => gic.ppi_in_245;
+ self.ppi_246 => gic.ppi_in_246;
+ self.ppi_247 => gic.ppi_in_247;
+ self.ppi_248 => gic.ppi_in_248;
+ self.ppi_249 => gic.ppi_in_249;
+ self.ppi_250 => gic.ppi_in_250;
+ self.ppi_251 => gic.ppi_in_251;
+ self.ppi_252 => gic.ppi_in_252;
+ self.ppi_253 => gic.ppi_in_253;
+ self.ppi_254 => gic.ppi_in_254;
+ self.ppi_255 => gic.ppi_in_255;
+
+ self.spi => gic.spi_in;
+
+ // Connections from CPU
+ self.cnthpirq => cnthpirqBridge.amba_pv_signal_s;
+ cnthpirqBridge.sg_signal_m => gic.ppi_in_0[10];
+ self.cnthvirq => cnthvirqBridge.amba_pv_signal_s;
+ cnthvirqBridge.sg_signal_m => gic.ppi_in_0[12];
+ self.cntpnsirq => cntpnsirqBridge.amba_pv_signal_s;
+ cntpnsirqBridge.sg_signal_m => gic.ppi_in_0[14];
+ self.cntpsirq => cntpsirqBridge.amba_pv_signal_s;
+ cntpsirqBridge.sg_signal_m => gic.ppi_in_0[13];
+ self.cntvirq => cntvirqBridge.amba_pv_signal_s;
+ cntvirqBridge.sg_signal_m => gic.ppi_in_0[11];
+ self.commirq => commirqBridge.amba_pv_signal_s;
+ commirqBridge.sg_signal_m => gic.ppi_in_0[6];
+ self.ctidbgirq => ctidbgirqBridge.amba_pv_signal_s;
+ ctidbgirqBridge.sg_signal_m => gic.ppi_in_0[8];
+ self.pmuirq => pmuirqBridge.amba_pv_signal_s;
+ pmuirqBridge.sg_signal_m => gic.ppi_in_0[7];
+ self.vcpumntirq => vcpumntirqBridge.amba_pv_signal_s;
+ vcpumntirqBridge.sg_signal_m => gic.ppi_in_0[9];
+ }
+
+ properties
+ {
+ component_type = "System";
+ }
+
+ master port<AMBAPV> amba_m;
+ slave port<AMBAPV> amba_s;
+
+ slave port<AMBAPV> redistributor_s;
+ master port<AMBAPV> redistributor_m;
+
+ #define setPPI(C) \
+ case C: ppi_##C[num].setValue(state); \
+ break
+ slave port<AMBAPVPPICommand> ppi_command
+ {
+ behavior set_state(int export_id, const FastModel::PPICommand &value)
+ {
+ sg::Signal::State state = value.state();
+ uint32_t num = value.num();
+ uint8_t cpu = value.cpu();
+
+ switch (cpu) {
+ setPPI(0); setPPI(1); setPPI(2); setPPI(3); setPPI(4);
+ setPPI(5); setPPI(6); setPPI(7); setPPI(8); setPPI(9);
+ setPPI(10); setPPI(11); setPPI(12); setPPI(13); setPPI(14);
+ setPPI(15); setPPI(16); setPPI(17); setPPI(18); setPPI(19);
+ setPPI(20); setPPI(21); setPPI(22); setPPI(23); setPPI(24);
+ setPPI(25); setPPI(26); setPPI(27); setPPI(28); setPPI(29);
+ setPPI(30); setPPI(31); setPPI(32); setPPI(33); setPPI(34);
+ setPPI(35); setPPI(36); setPPI(37); setPPI(38); setPPI(39);
+ setPPI(40); setPPI(41); setPPI(42); setPPI(43); setPPI(44);
+ setPPI(45); setPPI(46); setPPI(47); setPPI(48); setPPI(49);
+ setPPI(50); setPPI(51); setPPI(52); setPPI(53); setPPI(54);
+ setPPI(55); setPPI(56); setPPI(57); setPPI(58); setPPI(59);
+ setPPI(60); setPPI(61); setPPI(62); setPPI(63); setPPI(64);
+ setPPI(65); setPPI(66); setPPI(67); setPPI(68); setPPI(69);
+ setPPI(70); setPPI(71); setPPI(72); setPPI(73); setPPI(74);
+ setPPI(75); setPPI(76); setPPI(77); setPPI(78); setPPI(79);
+ setPPI(80); setPPI(81); setPPI(82); setPPI(83); setPPI(84);
+ setPPI(85); setPPI(86); setPPI(87); setPPI(88); setPPI(89);
+ setPPI(90); setPPI(91); setPPI(92); setPPI(93); setPPI(94);
+ setPPI(95); setPPI(96); setPPI(97); setPPI(98); setPPI(99);
+ setPPI(100); setPPI(101); setPPI(102); setPPI(103); setPPI(104);
+ setPPI(105); setPPI(106); setPPI(107); setPPI(108); setPPI(109);
+ setPPI(110); setPPI(111); setPPI(112); setPPI(113); setPPI(114);
+ setPPI(115); setPPI(116); setPPI(117); setPPI(118); setPPI(119);
+ setPPI(120); setPPI(121); setPPI(122); setPPI(123); setPPI(124);
+ setPPI(125); setPPI(126); setPPI(127); setPPI(128); setPPI(129);
+ setPPI(130); setPPI(131); setPPI(132); setPPI(133); setPPI(134);
+ setPPI(135); setPPI(136); setPPI(137); setPPI(138); setPPI(139);
+ setPPI(140); setPPI(141); setPPI(142); setPPI(143); setPPI(144);
+ setPPI(145); setPPI(146); setPPI(147); setPPI(148); setPPI(149);
+ setPPI(150); setPPI(151); setPPI(152); setPPI(153); setPPI(154);
+ setPPI(155); setPPI(156); setPPI(157); setPPI(158); setPPI(159);
+ setPPI(160); setPPI(161); setPPI(162); setPPI(163); setPPI(164);
+ setPPI(165); setPPI(166); setPPI(167); setPPI(168); setPPI(169);
+ setPPI(170); setPPI(171); setPPI(172); setPPI(173); setPPI(174);
+ setPPI(175); setPPI(176); setPPI(177); setPPI(178); setPPI(179);
+ setPPI(180); setPPI(181); setPPI(182); setPPI(183); setPPI(184);
+ setPPI(185); setPPI(186); setPPI(187); setPPI(188); setPPI(189);
+ setPPI(190); setPPI(191); setPPI(192); setPPI(193); setPPI(194);
+ setPPI(195); setPPI(196); setPPI(197); setPPI(198); setPPI(199);
+ setPPI(200); setPPI(201); setPPI(202); setPPI(203); setPPI(204);
+ setPPI(205); setPPI(206); setPPI(207); setPPI(208); setPPI(209);
+ setPPI(210); setPPI(211); setPPI(212); setPPI(213); setPPI(214);
+ setPPI(215); setPPI(216); setPPI(217); setPPI(218); setPPI(219);
+ setPPI(220); setPPI(221); setPPI(222); setPPI(223); setPPI(224);
+ setPPI(225); setPPI(226); setPPI(227); setPPI(228); setPPI(229);
+ setPPI(230); setPPI(231); setPPI(232); setPPI(233); setPPI(234);
+ setPPI(235); setPPI(236); setPPI(237); setPPI(238); setPPI(239);
+ setPPI(240); setPPI(241); setPPI(242); setPPI(243); setPPI(244);
+ setPPI(245); setPPI(246); setPPI(247); setPPI(248); setPPI(249);
+ setPPI(250); setPPI(251); setPPI(252); setPPI(253); setPPI(254);
+ setPPI(255);
+ default:
+ sc_assert(false);
+ }
+ }
+ }
+ // CPU-side connections
+ slave port<AMBAPVSignal> cnthpirq;
+ slave port<AMBAPVSignal> cnthvirq;
+ slave port<AMBAPVSignal> cntpnsirq;
+ slave port<AMBAPVSignal> cntpsirq;
+ slave port<AMBAPVSignal> cntvirq;
+ slave port<AMBAPVSignal> commirq;
+ slave port<AMBAPVSignal> ctidbgirq;
+ slave port<AMBAPVSignal> pmuirq;
+ slave port<AMBAPVSignal> vcpumntirq;
+
+ slave port<AMBAPVSPICommand> spi_command
+ {
+ behavior set_state(int export_id, const FastModel::SPICommand &value)
+ {
+ spi[value.num()].setValue(value.state());
+ }
+ }
+
+ internal slave port<Signal> spi[988];
+
+ internal slave port<Signal> ppi_0[16];
+ internal slave port<Signal> ppi_1[16];
+ internal slave port<Signal> ppi_2[16];
+ internal slave port<Signal> ppi_3[16];
+ internal slave port<Signal> ppi_4[16];
+ internal slave port<Signal> ppi_5[16];
+ internal slave port<Signal> ppi_6[16];
+ internal slave port<Signal> ppi_7[16];
+ internal slave port<Signal> ppi_8[16];
+ internal slave port<Signal> ppi_9[16];
+ internal slave port<Signal> ppi_10[16];
+ internal slave port<Signal> ppi_11[16];
+ internal slave port<Signal> ppi_12[16];
+ internal slave port<Signal> ppi_13[16];
+ internal slave port<Signal> ppi_14[16];
+ internal slave port<Signal> ppi_15[16];
+ internal slave port<Signal> ppi_16[16];
+ internal slave port<Signal> ppi_17[16];
+ internal slave port<Signal> ppi_18[16];
+ internal slave port<Signal> ppi_19[16];
+ internal slave port<Signal> ppi_20[16];
+ internal slave port<Signal> ppi_21[16];
+ internal slave port<Signal> ppi_22[16];
+ internal slave port<Signal> ppi_23[16];
+ internal slave port<Signal> ppi_24[16];
+ internal slave port<Signal> ppi_25[16];
+ internal slave port<Signal> ppi_26[16];
+ internal slave port<Signal> ppi_27[16];
+ internal slave port<Signal> ppi_28[16];
+ internal slave port<Signal> ppi_29[16];
+ internal slave port<Signal> ppi_30[16];
+ internal slave port<Signal> ppi_31[16];
+ internal slave port<Signal> ppi_32[16];
+ internal slave port<Signal> ppi_33[16];
+ internal slave port<Signal> ppi_34[16];
+ internal slave port<Signal> ppi_35[16];
+ internal slave port<Signal> ppi_36[16];
+ internal slave port<Signal> ppi_37[16];
+ internal slave port<Signal> ppi_38[16];
+ internal slave port<Signal> ppi_39[16];
+ internal slave port<Signal> ppi_40[16];
+ internal slave port<Signal> ppi_41[16];
+ internal slave port<Signal> ppi_42[16];
+ internal slave port<Signal> ppi_43[16];
+ internal slave port<Signal> ppi_44[16];
+ internal slave port<Signal> ppi_45[16];
+ internal slave port<Signal> ppi_46[16];
+ internal slave port<Signal> ppi_47[16];
+ internal slave port<Signal> ppi_48[16];
+ internal slave port<Signal> ppi_49[16];
+ internal slave port<Signal> ppi_50[16];
+ internal slave port<Signal> ppi_51[16];
+ internal slave port<Signal> ppi_52[16];
+ internal slave port<Signal> ppi_53[16];
+ internal slave port<Signal> ppi_54[16];
+ internal slave port<Signal> ppi_55[16];
+ internal slave port<Signal> ppi_56[16];
+ internal slave port<Signal> ppi_57[16];
+ internal slave port<Signal> ppi_58[16];
+ internal slave port<Signal> ppi_59[16];
+ internal slave port<Signal> ppi_60[16];
+ internal slave port<Signal> ppi_61[16];
+ internal slave port<Signal> ppi_62[16];
+ internal slave port<Signal> ppi_63[16];
+ internal slave port<Signal> ppi_64[16];
+ internal slave port<Signal> ppi_65[16];
+ internal slave port<Signal> ppi_66[16];
+ internal slave port<Signal> ppi_67[16];
+ internal slave port<Signal> ppi_68[16];
+ internal slave port<Signal> ppi_69[16];
+ internal slave port<Signal> ppi_70[16];
+ internal slave port<Signal> ppi_71[16];
+ internal slave port<Signal> ppi_72[16];
+ internal slave port<Signal> ppi_73[16];
+ internal slave port<Signal> ppi_74[16];
+ internal slave port<Signal> ppi_75[16];
+ internal slave port<Signal> ppi_76[16];
+ internal slave port<Signal> ppi_77[16];
+ internal slave port<Signal> ppi_78[16];
+ internal slave port<Signal> ppi_79[16];
+ internal slave port<Signal> ppi_80[16];
+ internal slave port<Signal> ppi_81[16];
+ internal slave port<Signal> ppi_82[16];
+ internal slave port<Signal> ppi_83[16];
+ internal slave port<Signal> ppi_84[16];
+ internal slave port<Signal> ppi_85[16];
+ internal slave port<Signal> ppi_86[16];
+ internal slave port<Signal> ppi_87[16];
+ internal slave port<Signal> ppi_88[16];
+ internal slave port<Signal> ppi_89[16];
+ internal slave port<Signal> ppi_90[16];
+ internal slave port<Signal> ppi_91[16];
+ internal slave port<Signal> ppi_92[16];
+ internal slave port<Signal> ppi_93[16];
+ internal slave port<Signal> ppi_94[16];
+ internal slave port<Signal> ppi_95[16];
+ internal slave port<Signal> ppi_96[16];
+ internal slave port<Signal> ppi_97[16];
+ internal slave port<Signal> ppi_98[16];
+ internal slave port<Signal> ppi_99[16];
+ internal slave port<Signal> ppi_100[16];
+ internal slave port<Signal> ppi_101[16];
+ internal slave port<Signal> ppi_102[16];
+ internal slave port<Signal> ppi_103[16];
+ internal slave port<Signal> ppi_104[16];
+ internal slave port<Signal> ppi_105[16];
+ internal slave port<Signal> ppi_106[16];
+ internal slave port<Signal> ppi_107[16];
+ internal slave port<Signal> ppi_108[16];
+ internal slave port<Signal> ppi_109[16];
+ internal slave port<Signal> ppi_110[16];
+ internal slave port<Signal> ppi_111[16];
+ internal slave port<Signal> ppi_112[16];
+ internal slave port<Signal> ppi_113[16];
+ internal slave port<Signal> ppi_114[16];
+ internal slave port<Signal> ppi_115[16];
+ internal slave port<Signal> ppi_116[16];
+ internal slave port<Signal> ppi_117[16];
+ internal slave port<Signal> ppi_118[16];
+ internal slave port<Signal> ppi_119[16];
+ internal slave port<Signal> ppi_120[16];
+ internal slave port<Signal> ppi_121[16];
+ internal slave port<Signal> ppi_122[16];
+ internal slave port<Signal> ppi_123[16];
+ internal slave port<Signal> ppi_124[16];
+ internal slave port<Signal> ppi_125[16];
+ internal slave port<Signal> ppi_126[16];
+ internal slave port<Signal> ppi_127[16];
+ internal slave port<Signal> ppi_128[16];
+ internal slave port<Signal> ppi_129[16];
+ internal slave port<Signal> ppi_130[16];
+ internal slave port<Signal> ppi_131[16];
+ internal slave port<Signal> ppi_132[16];
+ internal slave port<Signal> ppi_133[16];
+ internal slave port<Signal> ppi_134[16];
+ internal slave port<Signal> ppi_135[16];
+ internal slave port<Signal> ppi_136[16];
+ internal slave port<Signal> ppi_137[16];
+ internal slave port<Signal> ppi_138[16];
+ internal slave port<Signal> ppi_139[16];
+ internal slave port<Signal> ppi_140[16];
+ internal slave port<Signal> ppi_141[16];
+ internal slave port<Signal> ppi_142[16];
+ internal slave port<Signal> ppi_143[16];
+ internal slave port<Signal> ppi_144[16];
+ internal slave port<Signal> ppi_145[16];
+ internal slave port<Signal> ppi_146[16];
+ internal slave port<Signal> ppi_147[16];
+ internal slave port<Signal> ppi_148[16];
+ internal slave port<Signal> ppi_149[16];
+ internal slave port<Signal> ppi_150[16];
+ internal slave port<Signal> ppi_151[16];
+ internal slave port<Signal> ppi_152[16];
+ internal slave port<Signal> ppi_153[16];
+ internal slave port<Signal> ppi_154[16];
+ internal slave port<Signal> ppi_155[16];
+ internal slave port<Signal> ppi_156[16];
+ internal slave port<Signal> ppi_157[16];
+ internal slave port<Signal> ppi_158[16];
+ internal slave port<Signal> ppi_159[16];
+ internal slave port<Signal> ppi_160[16];
+ internal slave port<Signal> ppi_161[16];
+ internal slave port<Signal> ppi_162[16];
+ internal slave port<Signal> ppi_163[16];
+ internal slave port<Signal> ppi_164[16];
+ internal slave port<Signal> ppi_165[16];
+ internal slave port<Signal> ppi_166[16];
+ internal slave port<Signal> ppi_167[16];
+ internal slave port<Signal> ppi_168[16];
+ internal slave port<Signal> ppi_169[16];
+ internal slave port<Signal> ppi_170[16];
+ internal slave port<Signal> ppi_171[16];
+ internal slave port<Signal> ppi_172[16];
+ internal slave port<Signal> ppi_173[16];
+ internal slave port<Signal> ppi_174[16];
+ internal slave port<Signal> ppi_175[16];
+ internal slave port<Signal> ppi_176[16];
+ internal slave port<Signal> ppi_177[16];
+ internal slave port<Signal> ppi_178[16];
+ internal slave port<Signal> ppi_179[16];
+ internal slave port<Signal> ppi_180[16];
+ internal slave port<Signal> ppi_181[16];
+ internal slave port<Signal> ppi_182[16];
+ internal slave port<Signal> ppi_183[16];
+ internal slave port<Signal> ppi_184[16];
+ internal slave port<Signal> ppi_185[16];
+ internal slave port<Signal> ppi_186[16];
+ internal slave port<Signal> ppi_187[16];
+ internal slave port<Signal> ppi_188[16];
+ internal slave port<Signal> ppi_189[16];
+ internal slave port<Signal> ppi_190[16];
+ internal slave port<Signal> ppi_191[16];
+ internal slave port<Signal> ppi_192[16];
+ internal slave port<Signal> ppi_193[16];
+ internal slave port<Signal> ppi_194[16];
+ internal slave port<Signal> ppi_195[16];
+ internal slave port<Signal> ppi_196[16];
+ internal slave port<Signal> ppi_197[16];
+ internal slave port<Signal> ppi_198[16];
+ internal slave port<Signal> ppi_199[16];
+ internal slave port<Signal> ppi_200[16];
+ internal slave port<Signal> ppi_201[16];
+ internal slave port<Signal> ppi_202[16];
+ internal slave port<Signal> ppi_203[16];
+ internal slave port<Signal> ppi_204[16];
+ internal slave port<Signal> ppi_205[16];
+ internal slave port<Signal> ppi_206[16];
+ internal slave port<Signal> ppi_207[16];
+ internal slave port<Signal> ppi_208[16];
+ internal slave port<Signal> ppi_209[16];
+ internal slave port<Signal> ppi_210[16];
+ internal slave port<Signal> ppi_211[16];
+ internal slave port<Signal> ppi_212[16];
+ internal slave port<Signal> ppi_213[16];
+ internal slave port<Signal> ppi_214[16];
+ internal slave port<Signal> ppi_215[16];
+ internal slave port<Signal> ppi_216[16];
+ internal slave port<Signal> ppi_217[16];
+ internal slave port<Signal> ppi_218[16];
+ internal slave port<Signal> ppi_219[16];
+ internal slave port<Signal> ppi_220[16];
+ internal slave port<Signal> ppi_221[16];
+ internal slave port<Signal> ppi_222[16];
+ internal slave port<Signal> ppi_223[16];
+ internal slave port<Signal> ppi_224[16];
+ internal slave port<Signal> ppi_225[16];
+ internal slave port<Signal> ppi_226[16];
+ internal slave port<Signal> ppi_227[16];
+ internal slave port<Signal> ppi_228[16];
+ internal slave port<Signal> ppi_229[16];
+ internal slave port<Signal> ppi_230[16];
+ internal slave port<Signal> ppi_231[16];
+ internal slave port<Signal> ppi_232[16];
+ internal slave port<Signal> ppi_233[16];
+ internal slave port<Signal> ppi_234[16];
+ internal slave port<Signal> ppi_235[16];
+ internal slave port<Signal> ppi_236[16];
+ internal slave port<Signal> ppi_237[16];
+ internal slave port<Signal> ppi_238[16];
+ internal slave port<Signal> ppi_239[16];
+ internal slave port<Signal> ppi_240[16];
+ internal slave port<Signal> ppi_241[16];
+ internal slave port<Signal> ppi_242[16];
+ internal slave port<Signal> ppi_243[16];
+ internal slave port<Signal> ppi_244[16];
+ internal slave port<Signal> ppi_245[16];
+ internal slave port<Signal> ppi_246[16];
+ internal slave port<Signal> ppi_247[16];
+ internal slave port<Signal> ppi_248[16];
+ internal slave port<Signal> ppi_249[16];
+ internal slave port<Signal> ppi_250[16];
+ internal slave port<Signal> ppi_251[16];
+ internal slave port<Signal> ppi_252[16];
+ internal slave port<Signal> ppi_253[16];
+ internal slave port<Signal> ppi_254[16];
+ internal slave port<Signal> ppi_255[16];
+}