@@ -216,6 +216,48 @@ TEST_F(TestDbNet, FindRelatedModNetsClearsSet)
216216 EXPECT_TRUE (related_modnets.empty ());
217217}
218218
219+ TEST_F (TestDbNet, InsertBufferIgnoresSupplyInputs)
220+ {
221+ dbMaster* inv_master = db_->findMaster (" INV_X1" );
222+ ASSERT_NE (inv_master, nullptr );
223+
224+ dbMaster* buffer_master
225+ = dbMaster::create (inv_master->getLib (), " BUF_WITH_INPUT_SUPPLIES" );
226+ buffer_master->setWidth (inv_master->getWidth ());
227+ buffer_master->setHeight (inv_master->getHeight ());
228+ buffer_master->setType (dbMasterType::CORE );
229+ dbMTerm* buffer_input
230+ = dbMTerm::create (buffer_master, " A" , dbIoType::INPUT , dbSigType::SIGNAL );
231+ dbMTerm* buffer_output = dbMTerm::create (
232+ buffer_master, " Z" , dbIoType::OUTPUT , dbSigType::SIGNAL );
233+ dbMTerm::create (buffer_master, " VDD" , dbIoType::INPUT , dbSigType::POWER );
234+ dbMTerm::create (buffer_master, " VSS" , dbIoType::INPUT , dbSigType::GROUND );
235+ buffer_master->setFrozen ();
236+
237+ dbInst* driver = dbInst::create (block_, inv_master, " driver" );
238+ dbInst* load = dbInst::create (block_, inv_master, " load" );
239+ dbITerm* driver_output = driver->findITerm (" ZN" );
240+ dbITerm* load_input = load->findITerm (" A" );
241+ ASSERT_NE (driver_output, nullptr );
242+ ASSERT_NE (load_input, nullptr );
243+
244+ dbNet* net = dbNet::create (block_, " signal" );
245+ driver_output->connect (net);
246+ load_input->connect (net);
247+
248+ dbInst* buffer
249+ = net->insertBufferBeforeLoad (load_input, buffer_master, nullptr , " buf" );
250+
251+ ASSERT_NE (buffer, nullptr );
252+ EXPECT_EQ (buffer->getITerm (buffer_input)->getNet (), net);
253+ dbNet* buffered_net = buffer->getITerm (buffer_output)->getNet ();
254+ ASSERT_NE (buffered_net, nullptr );
255+ EXPECT_NE (buffered_net, net);
256+ EXPECT_EQ (load_input->getNet (), buffered_net);
257+ EXPECT_EQ (buffer->findITerm (" VDD" )->getNet (), nullptr );
258+ EXPECT_EQ (buffer->findITerm (" VSS" )->getNet (), nullptr );
259+ }
260+
219261// Test that the net is renamed to the name of the highest-level modnet
220262TEST_F (TestDbNet, RenameWithModNetInHighestHier)
221263{
0 commit comments