@@ -77,6 +77,7 @@ bool DoPAR(Greenpak4Netlist* netlist, Greenpak4Device* device)
77
77
void PostPARDRC (PARGraph* netlist, Greenpak4Device* device)
78
78
{
79
79
LogNotice (" \n Checking post-route design rules...\n " );
80
+ LogIndenter li;
80
81
81
82
// Check for nodes in the netlist that have no load
82
83
for (uint32_t i=0 ; i<netlist->GetNumNodes (); i++)
@@ -154,15 +155,27 @@ void PostPARDRC(PARGraph* netlist, Greenpak4Device* device)
154
155
155
156
// Check for ABUF with inputs driven from non-analog IOs
156
157
auto abuf = device->GetAbuf ();
157
- CheckAnalogIbuf (abuf, dynamic_cast <Greenpak4IOB*>(abuf->GetInput ().GetRealEntity ()));
158
+ if (abuf)
159
+ CheckAnalogIbuf (abuf, dynamic_cast <Greenpak4IOB*>(abuf->GetInput ().GetRealEntity ()));
158
160
159
161
// Check for PGA with inputs driven from non-analog IOs
160
162
auto pga = device->GetPGA ();
161
- CheckAnalogIbuf (abuf, dynamic_cast <Greenpak4IOB*>(pga->GetInputP ().GetRealEntity ()));
162
- CheckAnalogIbuf (abuf, dynamic_cast <Greenpak4IOB*>(pga->GetInputN ().GetRealEntity ()));
163
+ if (pga)
164
+ {
165
+ CheckAnalogIbuf (abuf, dynamic_cast <Greenpak4IOB*>(pga->GetInputP ().GetRealEntity ()));
166
+ CheckAnalogIbuf (abuf, dynamic_cast <Greenpak4IOB*>(pga->GetInputN ().GetRealEntity ()));
167
+ }
163
168
164
169
// TODO: Check for VREF with inputs driven from non-analog IOs
165
170
171
+ // TODO: Check for PGA driving an IOB when ADC is enabled
172
+ // auto adc = device->GetADC();
173
+ if (pga /* && adc*/ )
174
+ {
175
+ // We do not yet implement the ADC
176
+ // so nothing to do here
177
+ }
178
+
166
179
// Check for multiple ACMPs using different settings of ACMP0's output mux
167
180
typedef pair<string, Greenpak4EntityOutput> spair;
168
181
switch (device->GetPart ())
0 commit comments