public virtual string TransformText() { this.GenerationEnvironment = null; #line 9 "" this.Write(@"library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.NUMERIC_STD.ALL; -- library SYSTEM_TYPES; use work.SYSTEM_TYPES.ALL; -- library CUSTOM_TYPES; use work.CUSTOM_TYPES.ALL; -- User defined packages here -- #### USER-DATA-IMPORTS-START -- #### USER-DATA-IMPORTS-END entity "); #line default #line hidden #line 23 "" this.Write(this.ToStringHelper.ToStringWithCulture(Network.Name)); #line default #line hidden #line 23 "" this.Write(" is\n port(\n\n"); #line default #line hidden #line 26 "" var feedbacks = RS.FeedbackBusses.ToArray(); var processes = Network.Processes.Where(x => !x.IsSimulation).ToArray(); #line default #line hidden #line 30 "" this.Write("\n"); #line default #line hidden #line 31 "" foreach (var bus in Network.Busses.Where(x => x.IsTopLevelInput || x.IsTopLevelOutput)) { var signaltype = "inout"; if (bus.IsTopLevelInput && !bus.IsTopLevelOutput) { signaltype = "in"; } else if (bus.IsTopLevelOutput && !bus.IsTopLevelInput) { signaltype = "out"; } #line default #line hidden #line 39 "" this.Write(" -- Top-level bus "); #line default #line hidden #line 39 "" this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name)); #line default #line hidden #line 39 "" this.Write(" signals\n"); #line default #line hidden #line 40 "" foreach (var signal in bus.Signals) { #line default #line hidden #line 41 "" this.Write(" "); #line default #line hidden #line 41 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(bus.InstanceName + "_" + signal.Name))); #line default #line hidden #line 41 "" this.Write(": "); #line default #line hidden #line 41 "" this.Write(this.ToStringHelper.ToStringWithCulture(signaltype)); #line default #line hidden #line 41 "" this.Write(" "); #line default #line hidden #line 41 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.VHDLWrappedTypeName(signal))); #line default #line hidden #line 41 "" this.Write(";\n"); #line default #line hidden #line 42 "" } #line default #line hidden #line 43 "" this.Write("\n"); #line default #line hidden #line 44 "" } #line default #line hidden #line 45 "" this.Write("\n"); #line default #line hidden #line 46 "" foreach (var bus in Network.Busses.Where(x => !(x.IsTopLevelInput || x.IsTopLevelOutput || x.IsInternal))) { #line default #line hidden #line 47 "" this.Write(" -- Interconnection bus "); #line default #line hidden #line 47 "" this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name)); #line default #line hidden #line 47 "" this.Write(" signals\n"); #line default #line hidden #line 48 "" foreach (var signal in bus.Signals) { #line default #line hidden #line 49 "" this.Write(" "); #line default #line hidden #line 49 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(bus.InstanceName + "_" + signal.Name))); #line default #line hidden #line 49 "" this.Write(": inout "); #line default #line hidden #line 49 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.VHDLWrappedTypeName(signal))); #line default #line hidden #line 49 "" this.Write(";\n"); #line default #line hidden #line 50 "" } #line default #line hidden #line 51 "" } #line default #line hidden #line 52 "" this.Write(@" -- User defined signals here -- #### USER-DATA-ENTITYSIGNALS-START -- #### USER-DATA-ENTITYSIGNALS-END -- Enable signal ENB : in Std_logic; -- Finished signal FIN : out Std_logic; -- Reset signal RST : in Std_logic; -- Clock signal CLK : in Std_logic ); end "); #line default #line hidden #line 69 "" this.Write(this.ToStringHelper.ToStringWithCulture(Network.Name)); #line default #line hidden #line 69 "" this.Write(";\n\narchitecture RTL of "); #line default #line hidden #line 71 "" this.Write(this.ToStringHelper.ToStringWithCulture(Network.Name)); #line default #line hidden #line 71 "" this.Write(" is \n -- User defined signals here\n -- #### USER-DATA-SIGNALS-START\n -- #### " + "USER-DATA-SIGNALS-END\n\n"); #line default #line hidden #line 76 "" if (feedbacks.Any()) { #line default #line hidden #line 77 "" this.Write(" -- Feedback signals\n"); #line default #line hidden #line 78 "" foreach (var signal in feedbacks.SelectMany(x => x.Signals)) { #line default #line hidden #line 79 "" this.Write(" signal "); #line default #line hidden #line 79 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("current_" + (signal.Parent as AST.Bus).InstanceName + "_" + signal.Name))); #line default #line hidden #line 79 "" this.Write(", "); #line default #line hidden #line 79 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("next_" + (signal.Parent as AST.Bus).InstanceName + "_" + signal.Name))); #line default #line hidden #line 79 "" this.Write(": "); #line default #line hidden #line 79 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.VHDLWrappedTypeName(signal))); #line default #line hidden #line 79 "" this.Write(";\n"); #line default #line hidden #line 80 "" } #line default #line hidden #line 81 "" } #line default #line hidden #line 82 "" this.Write("\n -- Process ready triggers\n"); #line default #line hidden #line 84 "" foreach (var p in processes) { #line default #line hidden #line 85 "" this.Write("\n signal "); #line default #line hidden #line 86 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("FIN_" + p.InstanceName))); #line default #line hidden #line 86 "" this.Write(this.ToStringHelper.ToStringWithCulture(p.IsClocked ? string.Empty : ", " + Naming.ToValidName("RDY_" + p.InstanceName))); #line default #line hidden #line 86 "" this.Write(" : std_logic;\n"); #line default #line hidden #line 87 "" } #line default #line hidden #line 88 "" this.Write("\n\n\n\n -- The primary ready driver signal\n signal RDY : std_logic;\n\nbegin\n\n"); #line default #line hidden #line 97 "" foreach (var p in processes) { #line default #line hidden #line 98 "" this.Write("\n -- Entity "); #line default #line hidden #line 99 "" this.Write(this.ToStringHelper.ToStringWithCulture(p.InstanceName)); #line default #line hidden #line 99 "" this.Write(" signals\n "); #line default #line hidden #line 100 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(p.InstanceName))); #line default #line hidden #line 100 "" this.Write(": entity work."); #line default #line hidden #line 100 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(p.Name))); #line default #line hidden #line 100 "" this.Write("\n"); #line default #line hidden #line 101 "" var lastel = p.SharedVariables.Cast <object>().Concat(p.SharedSignals).LastOrDefault(); if (lastel != null) { #line default #line hidden #line 104 "" this.Write(" generic map(\n"); #line default #line hidden #line 105 "" foreach (var variable in p.SharedVariables) { #line default #line hidden #line 106 "" this.Write(" "); #line default #line hidden #line 106 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("reset_" + variable.Name))); #line default #line hidden #line 106 "" this.Write(" => "); #line default #line hidden #line 106 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.GetResetExpression(variable))); #line default #line hidden #line 106 "" this.Write(this.ToStringHelper.ToStringWithCulture(variable == lastel ? "" : ",")); #line default #line hidden #line 106 "" this.Write("\n"); #line default #line hidden #line 107 "" } #line default #line hidden #line 108 "" foreach (var variable in p.SharedSignals) { #line default #line hidden #line 109 "" this.Write(" "); #line default #line hidden #line 109 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("reset_" + variable.Name))); #line default #line hidden #line 109 "" this.Write(" => "); #line default #line hidden #line 109 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.GetResetExpression(variable))); #line default #line hidden #line 109 "" this.Write(this.ToStringHelper.ToStringWithCulture(variable == lastel ? "" : ",")); #line default #line hidden #line 109 "" this.Write("\n"); #line default #line hidden #line 110 "" } #line default #line hidden #line 111 "" this.Write(" )\n"); #line default #line hidden #line 112 "" } #line default #line hidden #line 113 "" this.Write(" port map (\n"); #line default #line hidden #line 114 "" foreach (var bus in p.InputBusses.Union(p.OutputBusses)) { var isInput = p.InputBusses.Contains(bus); var isOutput = p.OutputBusses.Contains(bus); var isBoth = isInput && isOutput; var type = "Input/Output"; if (isInput && !isOutput) { type = "Input"; } else if (isOutput && !isInput) { type = "Output"; } var output_prefix = string.Empty; var input_prefix = string.Empty; if (feedbacks.Contains(bus)) { input_prefix = output_prefix = "current_"; } var busname = RS.GetLocalBusName(bus, p); var signals = bus.Signals.AsEnumerable(); if (isOutput && !isBoth) { signals = RS.WrittenSignals(p, bus); } #line default #line hidden #line 135 "" this.Write(" -- "); #line default #line hidden #line 135 "" this.Write(this.ToStringHelper.ToStringWithCulture(type)); #line default #line hidden #line 135 "" this.Write(" bus "); #line default #line hidden #line 135 "" this.Write(this.ToStringHelper.ToStringWithCulture(bus.Name)); #line default #line hidden #line 135 "" this.Write("\n"); #line default #line hidden #line 136 "" foreach (var signal in signals) { #line default #line hidden #line 137 "" if (isInput || isBoth) { #line default #line hidden #line 138 "" this.Write(" "); #line default #line hidden #line 138 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(busname + "_" + signal.Name))); #line default #line hidden #line 138 "" this.Write(" => "); #line default #line hidden #line 138 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(input_prefix + bus.InstanceName + "_" + signal.Name))); #line default #line hidden #line 138 "" this.Write(",\n"); #line default #line hidden #line 139 "" } else { #line default #line hidden #line 140 "" this.Write(" "); #line default #line hidden #line 140 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(busname + "_" + signal.Name))); #line default #line hidden #line 140 "" this.Write(" => "); #line default #line hidden #line 140 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(output_prefix + bus.InstanceName + "_" + signal.Name))); #line default #line hidden #line 140 "" this.Write(",\n"); #line default #line hidden #line 141 "" } #line default #line hidden #line 142 "" } #line default #line hidden #line 143 "" this.Write("\n"); #line default #line hidden #line 144 "" if (isBoth) { #line default #line hidden #line 145 "" foreach (var signal in bus.Signals) { #line default #line hidden #line 146 "" this.Write(" "); #line default #line hidden #line 146 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("out_" + busname + "_" + signal.Name))); #line default #line hidden #line 146 "" this.Write(" => "); #line default #line hidden #line 146 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("next_" + bus.InstanceName + "_" + signal.Name))); #line default #line hidden #line 146 "" this.Write(",\n"); #line default #line hidden #line 147 "" } #line default #line hidden #line 148 "" } #line default #line hidden #line 149 "" this.Write("\n"); #line default #line hidden #line 150 "" } #line default #line hidden #line 151 "" this.Write("\n CLK => CLK,\n RDY => "); #line default #line hidden #line 153 "" this.Write(this.ToStringHelper.ToStringWithCulture(p.IsClocked ? "RDY" : Naming.ToValidName("RDY_" + p.InstanceName))); #line default #line hidden #line 153 "" this.Write(",\n FIN => "); #line default #line hidden #line 154 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("FIN_" + p.InstanceName))); #line default #line hidden #line 154 "" this.Write(",\n ENB => ENB,\n RST => RST\n );\n\n"); #line default #line hidden #line 159 "" } #line default #line hidden #line 160 "" this.Write("\n -- Connect ready signals\n"); #line default #line hidden #line 162 "" foreach (var p in processes) { var parents = RS.DependsOn(p).Select(x => x.InstanceName).Distinct().ToArray(); if (parents.Length == 0) { if (!p.IsClocked) { #line default #line hidden #line 166 "" this.Write(" "); #line default #line hidden #line 166 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("RDY_" + p.InstanceName))); #line default #line hidden #line 166 "" this.Write(" <= RDY;\n"); #line default #line hidden #line 167 "" } } else if (parents.Length == 1) { #line default #line hidden #line 169 "" this.Write(" "); #line default #line hidden #line 169 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("RDY_" + p.InstanceName))); #line default #line hidden #line 169 "" this.Write(" <= "); #line default #line hidden #line 169 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("FIN_" + parents.First()))); #line default #line hidden #line 169 "" this.Write(";\n"); #line default #line hidden #line 170 "" } else { #line default #line hidden #line 171 "" this.Write(" -- Setup the RDY signal for "); #line default #line hidden #line 171 "" this.Write(this.ToStringHelper.ToStringWithCulture(p.InstanceName)); #line default #line hidden #line 171 "" this.Write("\n process(\n "); #line default #line hidden #line 173 "" this.Write(this.ToStringHelper.ToStringWithCulture(string.Join(", " + Environment.NewLine + " ", parents.Select(x => string.Format(Naming.ToValidName("FIN_" + x)))))); #line default #line hidden #line 173 "" this.Write("\n )\n begin\n if "); #line default #line hidden #line 176 "" this.Write(this.ToStringHelper.ToStringWithCulture(string.Join(" AND ", parents.Skip(1).Select(x => string.Format("{0} = {1}", Naming.ToValidName("FIN_" + parents.First()), Naming.ToValidName("FIN_" + x)))))); #line default #line hidden #line 176 "" this.Write(" then\n "); #line default #line hidden #line 177 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("RDY_" + p.InstanceName))); #line default #line hidden #line 177 "" this.Write(" <= "); #line default #line hidden #line 177 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("FIN_" + parents.First()))); #line default #line hidden #line 177 "" this.Write(";\n end if;\n end process;\n"); #line default #line hidden #line 180 "" } #line default #line hidden #line 181 "" } #line default #line hidden #line 182 "" this.Write("\n -- Setup the FIN feedback signals\n"); #line default #line hidden #line 184 "" if (processes.Length == 1) { #line default #line hidden #line 185 "" this.Write(" FIN <= "); #line default #line hidden #line 185 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("FIN_" + processes.First().InstanceName))); #line default #line hidden #line 185 "" this.Write(";\n"); #line default #line hidden #line 186 "" } else { #line default #line hidden #line 187 "" this.Write(" process(\n "); #line default #line hidden #line 188 "" this.Write(this.ToStringHelper.ToStringWithCulture(string.Join(", " + Environment.NewLine + " ", processes.Select(x => Naming.ToValidName("FIN_" + x.InstanceName))))); #line default #line hidden #line 188 "" this.Write("\n )\n begin\n if "); #line default #line hidden #line 191 "" this.Write(this.ToStringHelper.ToStringWithCulture(string.Join(" AND ", processes.Skip(1).Select(x => string.Format("{0} = {1}", Naming.ToValidName("FIN_" + processes.First().InstanceName), Naming.ToValidName("FIN_" + x.InstanceName)))))); #line default #line hidden #line 191 "" this.Write(" then\n FIN <= "); #line default #line hidden #line 192 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("FIN_" + processes.First().InstanceName))); #line default #line hidden #line 192 "" this.Write(";\n end if;\n end process;\n"); #line default #line hidden #line 195 "" } #line default #line hidden #line 196 "" this.Write(@" -- Propagate all clocked and feedback signals process( CLK, RST) variable readyflag: std_logic; begin if RST = '1' then RDY <= '0'; readyflag := '1'; elsif rising_edge(CLK) then if ENB = '1' then readyflag := not readyflag; RDY <= readyflag; "); #line default #line hidden #line 211 "" if (feedbacks.Any()) { #line default #line hidden #line 212 "" this.Write(" -- Forward feedback signals\n"); #line default #line hidden #line 213 "" foreach (var signal in feedbacks.SelectMany(x => x.Signals)) { #line default #line hidden #line 214 "" this.Write(" current_"); #line default #line hidden #line 214 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName((signal.Parent as AST.Bus).InstanceName + "_" + signal.Name))); #line default #line hidden #line 214 "" this.Write(" <= next_"); #line default #line hidden #line 214 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName((signal.Parent as AST.Bus).InstanceName + "_" + signal.Name))); #line default #line hidden #line 214 "" this.Write(";\n"); #line default #line hidden #line 215 "" } #line default #line hidden #line 216 "" } #line default #line hidden #line 217 "" this.Write(" end if;\n end if;\n end process;\n\n"); #line default #line hidden #line 221 "" if (feedbacks.Where(x => x.IsTopLevelOutput).Any()) { #line default #line hidden #line 222 "" this.Write(" -- Send feedback outputs to the actual output\n"); #line default #line hidden #line 223 "" foreach (var signal in feedbacks.Where(x => x.IsTopLevelOutput).SelectMany(x => x.Signals)) { #line default #line hidden #line 224 "" this.Write(" "); #line default #line hidden #line 224 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName((signal.Parent as AST.Bus).InstanceName + "_" + signal.Name))); #line default #line hidden #line 224 "" this.Write(" <= "); #line default #line hidden #line 224 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("next_" + (signal.Parent as AST.Bus).InstanceName + "_" + signal.Name))); #line default #line hidden #line 224 "" this.Write(";\n"); #line default #line hidden #line 225 "" } #line default #line hidden #line 226 "" } #line default #line hidden #line 227 "" this.Write("\n\n-- User defined processes here\n-- #### USER-DATA-CODE-START\n-- #### USER-DATA-C" + "ODE-END\n\nend RTL;"); #line default #line hidden return(this.GenerationEnvironment.ToString()); }
public virtual string TransformText() { this.GenerationEnvironment = null; #line 9 "" this.Write("library IEEE;\nuse IEEE.STD_LOGIC_1164.ALL;\nuse IEEE.NUMERIC_STD.ALL;\n\n-- library " + "SYSTEM_TYPES;\nuse work.SYSTEM_TYPES.ALL;\n\n-- library CUSTOM_TYPES;\nuse work.CUST" + "OM_TYPES.ALL;\n\n"); #line default #line hidden #line 19 "" if (RSP.HasCustomRenderer) { #line default #line hidden #line 20 "" this.Write(" -- Component declaration and signals\n"); #line default #line hidden #line 21 "" this.Write(this.ToStringHelper.ToStringWithCulture(RSP.CustomRendererInclude)); #line default #line hidden #line 21 "" this.Write("\n"); #line default #line hidden #line 22 "" } #line default #line hidden #line 23 "" this.Write("\n-- User defined packages here\n-- #### USER-DATA-IMPORTS-START\n-- #### USER-DATA-" + "IMPORTS-END\n\n\nentity "); #line default #line hidden #line 29 "" this.Write(this.ToStringHelper.ToStringWithCulture(Process.Name)); #line default #line hidden #line 29 "" this.Write(" is\n"); #line default #line hidden #line 30 "" var lastel = Process.SharedVariables.Cast <object>().Concat(Process.SharedSignals).LastOrDefault(); if (lastel != null) { #line default #line hidden #line 33 "" this.Write(" generic(\n"); #line default #line hidden #line 34 "" foreach (var variable in Process.SharedVariables) { #line default #line hidden #line 35 "" this.Write(" "); #line default #line hidden #line 35 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("reset_" + variable.Name))); #line default #line hidden #line 35 "" this.Write(": in "); #line default #line hidden #line 35 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.VHDLWrappedTypeName(variable))); #line default #line hidden #line 35 "" this.Write(this.ToStringHelper.ToStringWithCulture(variable == lastel ? "" : ";")); #line default #line hidden #line 35 "" this.Write("\n"); #line default #line hidden #line 36 "" } #line default #line hidden #line 37 "" foreach (var variable in Process.SharedSignals) { #line default #line hidden #line 38 "" this.Write(" "); #line default #line hidden #line 38 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("reset_" + variable.Name))); #line default #line hidden #line 38 "" this.Write(": in "); #line default #line hidden #line 38 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.VHDLWrappedTypeName(variable))); #line default #line hidden #line 38 "" this.Write(this.ToStringHelper.ToStringWithCulture(variable == lastel ? "" : ";")); #line default #line hidden #line 38 "" this.Write("\n"); #line default #line hidden #line 39 "" } #line default #line hidden #line 40 "" this.Write(" );\n"); #line default #line hidden #line 41 "" } #line default #line hidden #line 42 "" this.Write(" port(\n"); #line default #line hidden #line 43 "" foreach (var bus in Process.InputBusses.Where(x => !Process.OutputBusses.Contains(x))) { var busname = RS.GetLocalBusName(bus, Process); #line default #line hidden #line 46 "" this.Write(" -- Input bus "); #line default #line hidden #line 46 "" this.Write(this.ToStringHelper.ToStringWithCulture(busname)); #line default #line hidden #line 46 "" this.Write(" signals\n"); #line default #line hidden #line 47 "" foreach (var signal in bus.Signals) { #line default #line hidden #line 48 "" this.Write(" "); #line default #line hidden #line 48 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(busname + "_" + signal.Name))); #line default #line hidden #line 48 "" this.Write(": in "); #line default #line hidden #line 48 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.VHDLWrappedTypeName(signal))); #line default #line hidden #line 48 "" this.Write(";\n"); #line default #line hidden #line 49 "" } #line default #line hidden #line 50 "" } #line default #line hidden #line 51 "" this.Write("\n"); #line default #line hidden #line 52 "" foreach (var bus in Process.OutputBusses.Where(x => !Process.InputBusses.Contains(x))) { var busname = RS.GetLocalBusName(bus, Process); #line default #line hidden #line 55 "" this.Write(" -- Output bus "); #line default #line hidden #line 55 "" this.Write(this.ToStringHelper.ToStringWithCulture(busname)); #line default #line hidden #line 55 "" this.Write(" signals\n"); #line default #line hidden #line 56 "" foreach (var signal in RSP.WrittenSignals(bus)) { #line default #line hidden #line 57 "" this.Write(" "); #line default #line hidden #line 57 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(busname + "_" + signal.Name))); #line default #line hidden #line 57 "" this.Write(": out "); #line default #line hidden #line 57 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.VHDLWrappedTypeName(signal))); #line default #line hidden #line 57 "" this.Write(";\n"); #line default #line hidden #line 58 "" } #line default #line hidden #line 59 "" } #line default #line hidden #line 60 "" this.Write("\n"); #line default #line hidden #line 61 "" foreach (var bus in Process.InputBusses.Where(x => Process.OutputBusses.Contains(x))) { var busname = RS.GetLocalBusName(bus, Process); #line default #line hidden #line 64 "" this.Write(" -- Input/output bus "); #line default #line hidden #line 64 "" this.Write(this.ToStringHelper.ToStringWithCulture(busname)); #line default #line hidden #line 64 "" this.Write(" signals\n"); #line default #line hidden #line 65 "" foreach (var signal in bus.Signals) { #line default #line hidden #line 66 "" this.Write(" "); #line default #line hidden #line 66 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(busname + "_" + signal.Name))); #line default #line hidden #line 66 "" this.Write(": in "); #line default #line hidden #line 66 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.VHDLWrappedTypeName(signal))); #line default #line hidden #line 66 "" this.Write(";\n"); #line default #line hidden #line 67 "" } #line default #line hidden #line 68 "" this.Write("\n"); #line default #line hidden #line 69 "" foreach (var signal in bus.Signals) { #line default #line hidden #line 70 "" this.Write(" "); #line default #line hidden #line 70 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("out_" + busname + "_" + signal.Name))); #line default #line hidden #line 70 "" this.Write(": out "); #line default #line hidden #line 70 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.VHDLWrappedTypeName(signal))); #line default #line hidden #line 70 "" this.Write(";\n"); #line default #line hidden #line 71 "" } #line default #line hidden #line 72 "" } #line default #line hidden #line 73 "" this.Write(@" -- Clock signal CLK : in Std_logic; -- Ready signal RDY : in Std_logic; -- Finished signal FIN : out Std_logic; -- Enable signal ENB : in Std_logic; -- Reset signal RST : in Std_logic ); end "); #line default #line hidden #line 89 "" this.Write(this.ToStringHelper.ToStringWithCulture(Process.Name)); #line default #line hidden #line 89 "" this.Write(";\n\narchitecture RTL of "); #line default #line hidden #line 91 "" this.Write(this.ToStringHelper.ToStringWithCulture(Process.Name)); #line default #line hidden #line 91 "" this.Write(" is\n"); #line default #line hidden #line 92 "" if (RSP.HasCustomRenderer) { #line default #line hidden #line 93 "" this.Write(this.ToStringHelper.ToStringWithCulture(RSP.CustomRendererBody)); #line default #line hidden #line 93 "" this.Write("\n"); #line default #line hidden #line 94 "" } else { #line default #line hidden #line 95 "" foreach (var bus in Process.InternalBusses) { var busname = RS.GetLocalBusName(bus, Process); #line default #line hidden #line 98 "" this.Write(" -- Internal bus "); #line default #line hidden #line 98 "" this.Write(this.ToStringHelper.ToStringWithCulture(busname)); #line default #line hidden #line 98 "" this.Write(" signals\n"); #line default #line hidden #line 99 "" foreach (var signal in bus.Signals) { #line default #line hidden #line 100 "" this.Write(" signal "); #line default #line hidden #line 100 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(busname + "_" + signal.Name))); #line default #line hidden #line 100 "" this.Write(": "); #line default #line hidden #line 100 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.VHDLWrappedTypeName(signal))); #line default #line hidden #line 100 "" this.Write(";\n"); #line default #line hidden #line 101 "" } #line default #line hidden #line 102 "" this.Write("\n"); #line default #line hidden #line 103 "" } #line default #line hidden #line 104 "" this.Write("\n"); #line default #line hidden #line 105 "" if (Process.SharedSignals.Any() || Process.InternalDataElements.Any()) { #line default #line hidden #line 106 "" this.Write(" -- Internal signals\n"); #line default #line hidden #line 107 "" foreach (var s in Process.SharedSignals) { #line default #line hidden #line 108 "" this.Write(" signal "); #line default #line hidden #line 108 "" this.Write(this.ToStringHelper.ToStringWithCulture(s.Name)); #line default #line hidden #line 108 "" this.Write(" : "); #line default #line hidden #line 108 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.VHDLWrappedTypeName(s))); #line default #line hidden #line 108 "" this.Write(";\n"); #line default #line hidden #line 109 "" } #line default #line hidden #line 110 "" if (RSP.FiniteStateMethod != null) { #line default #line hidden #line 111 "" this.Write(" signal FSM_Trigger : Std_logic := \'0\';\n"); #line default #line hidden #line 112 "" } #line default #line hidden #line 113 "" this.Write("\n"); #line default #line hidden #line 114 "" foreach (var s in Process.InternalDataElements) { #line default #line hidden #line 115 "" this.Write(" "); #line default #line hidden #line 115 "" this.Write(this.ToStringHelper.ToStringWithCulture(s is AST.Signal ? "signal" : "shared variable")); #line default #line hidden #line 115 "" this.Write(" "); #line default #line hidden #line 115 "" this.Write(this.ToStringHelper.ToStringWithCulture(s.Name)); #line default #line hidden #line 115 "" this.Write(" : "); #line default #line hidden #line 115 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.VHDLWrappedTypeName(s))); #line default #line hidden #line 115 "" this.Write(" := "); #line default #line hidden #line 115 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.GetResetExpression(s))); #line default #line hidden #line 115 "" this.Write(";\n"); #line default #line hidden #line 116 "" } #line default #line hidden #line 117 "" } #line default #line hidden #line 118 "" this.Write("\n"); #line default #line hidden #line 119 "" if (Process.Methods != null && Process.Methods.Any(x => !(x.Ignore || x.IsStateMachine))) { #line default #line hidden #line 120 "" this.Write(" -- Internal methods\n"); #line default #line hidden #line 121 "" foreach (var s in Process.Methods.Where(x => !(x.Ignore || x.IsStateMachine))) { #line default #line hidden #line 122 "" foreach (var line in RSP.Helper.RenderMethod(s)) { #line default #line hidden #line 123 "" this.Write(" "); #line default #line hidden #line 123 "" this.Write(this.ToStringHelper.ToStringWithCulture(line)); #line default #line hidden #line 123 "" this.Write("\n"); #line default #line hidden #line 124 "" } #line default #line hidden #line 125 "" this.Write("\n"); #line default #line hidden #line 126 "" } #line default #line hidden #line 127 "" } #line default #line hidden #line 128 "" this.Write("\n"); #line default #line hidden #line 129 "" if (Process.IsClocked && RSP.FiniteStateMethod != null) { #line default #line hidden #line 130 "" this.Write(" -- Clock-edge capture signals\n"); #line default #line hidden #line 131 "" foreach (var bus in Process.InputBusses) { var busname = RS.GetLocalBusName(bus, Process); #line default #line hidden #line 134 "" this.Write(" -- Input bus "); #line default #line hidden #line 134 "" this.Write(this.ToStringHelper.ToStringWithCulture(busname)); #line default #line hidden #line 134 "" this.Write(" signals\n"); #line default #line hidden #line 135 "" foreach (var signal in bus.Signals) { #line default #line hidden #line 136 "" this.Write(" signal "); #line default #line hidden #line 136 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("capture_" + busname + "_" + signal.Name))); #line default #line hidden #line 136 "" this.Write(": "); #line default #line hidden #line 136 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.VHDLWrappedTypeName(signal))); #line default #line hidden #line 136 "" this.Write(" := "); #line default #line hidden #line 136 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.GetResetExpression(signal))); #line default #line hidden #line 136 "" this.Write(";\n"); #line default #line hidden #line 137 "" } #line default #line hidden #line 138 "" } #line default #line hidden #line 139 "" } #line default #line hidden #line 140 "" this.Write("\n -- User defined signals, procedures and components here\n -- #### USER" + "-DATA-SIGNALS-START\n -- #### USER-DATA-SIGNALS-END\n\nbegin\n\n -- Custom pr" + "ocesses go here\n -- #### USER-DATA-PROCESSES-START\n -- #### USER-DATA-PROC" + "ESSES-END\n\n"); #line default #line hidden #line 151 "" if (Process.Methods != null && Process.Methods.Any(x => !x.Ignore && x.IsStateMachine)) { #line default #line hidden #line 152 "" this.Write(" -- State machine process\n"); #line default #line hidden #line 153 "" foreach (var s in Process.Methods.Where(x => !x.Ignore && x.IsStateMachine)) { #line default #line hidden #line 154 "" foreach (var line in RSP.Helper.RenderStateMachine(s, RSP)) { #line default #line hidden #line 155 "" this.Write(" "); #line default #line hidden #line 155 "" this.Write(this.ToStringHelper.ToStringWithCulture(line)); #line default #line hidden #line 155 "" this.Write("\n"); #line default #line hidden #line 156 "" } #line default #line hidden #line 157 "" } #line default #line hidden #line 158 "" } #line default #line hidden #line 159 "" this.Write("\n\n"); #line default #line hidden #line 161 "" var sensitivity_signal = RSP.Process.IsClocked ? "CLK" : "RDY"; var variables = RSP.Variables.Concat(RSP.FiniteStateMethod == null ? RSP.SharedVariables : new Variable[0]); #line default #line hidden #line 165 "" this.Write("\n process(\n -- Custom sensitivity signals here\n -- #### USER-DAT" + "A-SENSITIVITY-START\n -- #### USER-DATA-SENSITIVITY-END\n "); #line default #line hidden #line 170 "" this.Write(this.ToStringHelper.ToStringWithCulture(sensitivity_signal)); #line default #line hidden #line 170 "" this.Write(",\n RST\n )\n"); #line default #line hidden #line 173 "" if (variables.Count() > 0) { #line default #line hidden #line 174 "" this.Write(" -- Internal variables\n"); #line default #line hidden #line 175 "" foreach (var s in variables) { #line default #line hidden #line 176 "" this.Write(" variable "); #line default #line hidden #line 176 "" this.Write(this.ToStringHelper.ToStringWithCulture(s.Name)); #line default #line hidden #line 176 "" this.Write(" : "); #line default #line hidden #line 176 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.VHDLWrappedTypeName(s))); #line default #line hidden #line 176 "" this.Write(this.ToStringHelper.ToStringWithCulture(Process.SharedVariables.Contains(s) ? " := " + Naming.ToValidName("reset_" + s.Name) : "")); #line default #line hidden #line 176 "" this.Write(";\n"); #line default #line hidden #line 177 "" } #line default #line hidden #line 178 "" } #line default #line hidden #line 179 "" this.Write("\n"); #line default #line hidden #line 180 "" if (!RSP.Process.IsClocked) { #line default #line hidden #line 181 "" this.Write(" variable reentry_guard: std_logic;\n"); #line default #line hidden #line 182 "" } #line default #line hidden #line 183 "" this.Write(@" -- #### USER-DATA-NONCLOCKEDVARIABLES-START -- #### USER-DATA-NONCLOCKEDVARIABLES-END begin -- Initialize code here -- #### USER-DATA-NONCLOCKEDSHAREDINITIALIZECODE-START -- #### USER-DATA-NONCLOCKEDSHAREDINITIALIZECODE-END if RST = '1' then "); #line default #line hidden #line 192 "" foreach (var s in RSP.ProcessResetStaments) { #line default #line hidden #line 193 "" this.Write(" "); #line default #line hidden #line 193 "" this.Write(this.ToStringHelper.ToStringWithCulture(s)); #line default #line hidden #line 193 "" this.Write("\n"); #line default #line hidden #line 194 "" } #line default #line hidden #line 195 "" foreach (var variable in RSP.FiniteStateMethod == null ? RSP.SharedVariables : RSP.Variables) { #line default #line hidden #line 196 "" this.Write(" "); #line default #line hidden #line 196 "" this.Write(this.ToStringHelper.ToStringWithCulture(variable.Name)); #line default #line hidden #line 196 "" this.Write(" := "); #line default #line hidden #line 196 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("reset_" + variable.Name))); #line default #line hidden #line 196 "" this.Write(";\n"); #line default #line hidden #line 197 "" } #line default #line hidden #line 198 "" foreach (var variable in Process.SharedSignals) { #line default #line hidden #line 199 "" this.Write(" "); #line default #line hidden #line 199 "" this.Write(this.ToStringHelper.ToStringWithCulture(variable.Name)); #line default #line hidden #line 199 "" this.Write(" <= "); #line default #line hidden #line 199 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("reset_" + variable.Name))); #line default #line hidden #line 199 "" this.Write(";\n"); #line default #line hidden #line 200 "" } #line default #line hidden #line 201 "" this.Write("\n"); #line default #line hidden #line 202 "" if (Process.IsClocked && RSP.FiniteStateMethod != null) { #line default #line hidden #line 203 "" this.Write(" -- Clock-edge capture signals\n"); #line default #line hidden #line 204 "" foreach (var bus in Process.InputBusses) { var busname = RS.GetLocalBusName(bus, Process); #line default #line hidden #line 207 "" this.Write(" -- Input bus "); #line default #line hidden #line 207 "" this.Write(this.ToStringHelper.ToStringWithCulture(busname)); #line default #line hidden #line 207 "" this.Write(" signals\n"); #line default #line hidden #line 208 "" foreach (var signal in bus.Signals) { #line default #line hidden #line 209 "" this.Write(" "); #line default #line hidden #line 209 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("capture_" + busname + "_" + signal.Name))); #line default #line hidden #line 209 "" this.Write(" <= "); #line default #line hidden #line 209 "" this.Write(this.ToStringHelper.ToStringWithCulture(RS.GetResetExpression(signal))); #line default #line hidden #line 209 "" this.Write(";\n"); #line default #line hidden #line 210 "" } #line default #line hidden #line 211 "" } #line default #line hidden #line 212 "" } #line default #line hidden #line 213 "" this.Write(" \n"); #line default #line hidden #line 214 "" if (!RSP.Process.IsClocked) { #line default #line hidden #line 215 "" this.Write(" reentry_guard := \'0\';\n"); #line default #line hidden #line 216 "" } #line default #line hidden #line 217 "" if (RSP.FiniteStateMethod == null) { #line default #line hidden #line 218 "" this.Write(" FIN <= \'0\';\n"); #line default #line hidden #line 219 "" } else { #line default #line hidden #line 220 "" this.Write(" FSM_Trigger <= \'0\';\n"); #line default #line hidden #line 221 "" } #line default #line hidden #line 222 "" this.Write("\n -- Initialize code here\n -- #### USER-DATA-NONCLOCKEDRESE" + "TCODE-START\n -- #### USER-DATA-NONCLOCKEDRESETCODE-END\n\n"); #line default #line hidden #line 227 "" if (RSP.Process.IsClocked) { #line default #line hidden #line 228 "" this.Write(" elsif rising_edge("); #line default #line hidden #line 228 "" this.Write(this.ToStringHelper.ToStringWithCulture(sensitivity_signal)); #line default #line hidden #line 228 "" this.Write(") then\n"); #line default #line hidden #line 229 "" } else { #line default #line hidden #line 230 "" this.Write(" elsif reentry_guard /= RDY then\n reentry_guard := RDY;\n"); #line default #line hidden #line 232 "" } #line default #line hidden #line 233 "" this.Write("\n -- Initialize code here\n -- #### USER-DATA-NONCLOCKEDINIT" + "IALIZECODE-START\n -- #### USER-DATA-NONCLOCKEDINITIALIZECODE-END\n\n\n"); #line default #line hidden #line 239 "" foreach (var line in RSP.Helper.RenderMethod(Process.MainMethod)) { #line default #line hidden #line 240 "" this.Write(" "); #line default #line hidden #line 240 "" this.Write(this.ToStringHelper.ToStringWithCulture(line)); #line default #line hidden #line 240 "" this.Write("\n"); #line default #line hidden #line 241 "" } #line default #line hidden #line 242 "" this.Write("\n"); #line default #line hidden #line 243 "" if (Process.IsClocked && RSP.FiniteStateMethod != null) { #line default #line hidden #line 244 "" this.Write(" -- Clock-edge capture signals\n"); #line default #line hidden #line 245 "" foreach (var bus in Process.InputBusses) { var busname = RS.GetLocalBusName(bus, Process); #line default #line hidden #line 248 "" this.Write(" -- Input bus "); #line default #line hidden #line 248 "" this.Write(this.ToStringHelper.ToStringWithCulture(busname)); #line default #line hidden #line 248 "" this.Write(" signals\n"); #line default #line hidden #line 249 "" foreach (var signal in bus.Signals) { #line default #line hidden #line 250 "" this.Write(" "); #line default #line hidden #line 250 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName("capture_" + busname + "_" + signal.Name))); #line default #line hidden #line 250 "" this.Write(" <= "); #line default #line hidden #line 250 "" this.Write(this.ToStringHelper.ToStringWithCulture(Naming.ToValidName(busname + "_" + signal.Name))); #line default #line hidden #line 250 "" this.Write(";\n"); #line default #line hidden #line 251 "" } #line default #line hidden #line 252 "" } #line default #line hidden #line 253 "" } #line default #line hidden #line 254 "" this.Write("\n\n"); #line default #line hidden #line 256 "" if (RSP.FiniteStateMethod == null) { #line default #line hidden #line 257 "" this.Write(" FIN <= "); #line default #line hidden #line 257 "" this.Write(this.ToStringHelper.ToStringWithCulture(sensitivity_signal)); #line default #line hidden #line 257 "" this.Write(";\n"); #line default #line hidden #line 258 "" } else if (RSP.Process.IsClocked) { #line default #line hidden #line 259 "" this.Write(" FSM_Trigger <= not FSM_Trigger;\n"); #line default #line hidden #line 260 "" } else { #line default #line hidden #line 261 "" this.Write(" FSM_Trigger <= reentry_guard;\n"); #line default #line hidden #line 262 "" } #line default #line hidden #line 263 "" this.Write("\n end if;\n\n -- Non-clocked process actions here\n\n -- #### US" + "ER-DATA-CODE-START\n -- #### USER-DATA-CODE-END\n\n end process;\n\n"); #line default #line hidden #line 273 "" } #line default #line hidden #line 274 "" this.Write("\nend RTL;\n\n-- User defined architectures here\n-- #### USER-DATA-ARCH-START\n-- ###" + "# USER-DATA-ARCH-END\n"); #line default #line hidden return(this.GenerationEnvironment.ToString()); }