Я не эксперт в дипломатии ракетных чипов, но, взглянув на код, я думаю, makeIO
и makeSink
делают принципиально разные вещи.
makeIO
принимает BundleBridgeSource
и материализует порты в реализации модуля Chisel для управления этим источником.На BundleBrigeSink
есть такой же метод.Я полагаю, что этот метод - способ, которым вы берете любую сторону моста Bundle и взаимодействуете с ним в фактической долотной части генератора (в отличие от дипломатической части).
makeSink
превращается BundleBridgeSource
в BundleBridgeSink
.Он не материализует порты долот и остается в мире дипломатии, а не в мире долот.
В приведенном вами примере из I2C
обратите внимание на то, как часть с makeSink
является особенностью, которую нужно смешивать вчто-то, что расширяет BaseSubsystem
, это дипломатично.С другой стороны, HasPeripheryI2CModuleImp
, который имеет makeIO
, расширяет LazyModuleImp
, который является частью долота.Один из способов думать об этом - два разных «взгляда» на одно и то же.Долото и Дипломатия используют разные предметы, таким образом i2cNodes
(дипломатический) против i2c
(Долото).