tscircuit/ti
ti tscircuit library
- Version
- 1.0.192
- License
- unset
- Stars
- 0
lib/subcircuits/RadarFrontEndProcessing.circuit.tsx
import type { SubcircuitProps } from "@tscircuit/props";
import { Fragment } from "react";
import { RadarQspiFlash_MX25V1635FZNQ } from "./RadarQspiFlash_MX25V1635FZNQ.circuit.tsx";
import {
RADAR_SOC_INTERFACE_ENDPOINTS,
RADAR_SOC_INTERFACE_NETS,
RadarSoc_AWR1843ARBGALPQ1,
} from "./RadarSoc_AWR1843ARBGALPQ1.circuit.tsx";
const RADAR_QSPI_SHEET_NAME = "qspi_flash";
// Re-center the X=500 extraction origin on the Altium sheet and retain one
// 10-unit source-grid step of clearance inside the native inner frame.
const RADAR_QSPI_SHEET_X_OFFSET = -3.6576;
const COMPOSITE_INTERNAL_NETS = new Set([
"AR_XTAL_P",
"AR_XTAL_N",
"AR_QSPI_CS",
"AR_QSPI_CLK",
"AR_QSPI_D0",
"AR_QSPI_D1",
"AR_QSPI_D2",
"AR_QSPI_D3",
]);
export const RADAR_FRONT_END_INTERFACE_NETS = RADAR_SOC_INTERFACE_NETS.filter(
(net) => !COMPOSITE_INTERNAL_NETS.has(net),
);
const radarSocEndpoint = (net: string) =>
`.radar_soc > ${RADAR_SOC_INTERFACE_ENDPOINTS[net]}`;
const COMPOSITE_CONNECTIONS = [
{
net: "AR_QSPI_CS",
endpoints: [radarSocEndpoint("AR_QSPI_CS"), ".qspi_flash > .U9 > .CS"],
},
{
net: "AR_QSPI_CLK",
endpoints: [radarSocEndpoint("AR_QSPI_CLK"), ".qspi_flash > .R47 > .pin1"],
},
{
net: "AR_QSPI_D0",
endpoints: [radarSocEndpoint("AR_QSPI_D0"), ".qspi_flash > .R6 > .pin1"],
},
{
net: "AR_QSPI_D1",
endpoints: [radarSocEndpoint("AR_QSPI_D1"), ".qspi_flash > .R46 > .pin1"],
},
{
net: "AR_QSPI_D2",
endpoints: [radarSocEndpoint("AR_QSPI_D2"), ".qspi_flash > .R48 > .pin1"],
},
{
net: "AR_QSPI_D3",
endpoints: [radarSocEndpoint("AR_QSPI_D3"), ".qspi_flash > .R49 > .pin1"],
},
{
net: "PMIC_3V3",
endpoints: [radarSocEndpoint("PMIC_3V3"), ".qspi_flash > .U9 > .VCC"],
},
{
net: "GND",
endpoints: [radarSocEndpoint("GND"), ".qspi_flash > .U9 > .GND"],
},
] as const;
/**
* Native tscircuit composite for the TIDEP-01024 radar front end and
* processing subsystem. The radar SoC child owns the complete AOP I/O and
* power sheets, including the 40 MHz crystal schematic section. The QSPI
* flash remains on its original independent TI sheet.
*/
export const RadarFrontEndProcessing = (props: SubcircuitProps) => (
<subcircuit {...props}>
<schematicsheet
name={RADAR_QSPI_SHEET_NAME}
displayName="QSPI Flash"
sheetIndex={2}
/>
<RadarSoc_AWR1843ARBGALPQ1 name="radar_soc" />
<RadarQspiFlash_MX25V1635FZNQ
name="qspi_flash"
schSheetName={RADAR_QSPI_SHEET_NAME}
schX={RADAR_QSPI_SHEET_X_OFFSET}
schY={0}
/>
{COMPOSITE_CONNECTIONS.map(({ net, endpoints }) => (
<Fragment key={net}>
{endpoints.map((endpoint, index) => (
<Fragment key={`${net}-${index}`}>
<trace
name={`COMPOSITE_${net}_${index + 1}`}
from={endpoint}
to={`net.${net}`}
schDisplayLabel={net}
/>
</Fragment>
))}
</Fragment>
))}
{RADAR_FRONT_END_INTERFACE_NETS.map((net) => (
<Fragment key={`interface-${net}`}>
<port name={net} />
<trace
name={`COMPOSITE_INTERFACE_${net}`}
from={`.${net}`}
to={radarSocEndpoint(net)}
/>
</Fragment>
))}
</subcircuit>
);
export default RadarFrontEndProcessing;