← Back to team overview

kicad-developers team mailing list archive

Re: [PATCH] [RFC] Exporter for Mentor Hyperlynx

 

On 4/5/19 12:24 PM, Tomasz Wlostowski wrote:
> On 05/04/2019 18:04, Wayne Stambaugh wrote:
>> Tom,
>>
>> On 4/4/19 8:16 PM, Tomasz Wlostowski wrote:
>>> Hi,
>>>
>>> We needed to do some signal/power integrity simulations on one of our
>>> Kicad designs and in order to do that, we needed to convert a Kicad PCB
>>> to Hyperlynx format. Luckily, the format is simple, all text and well
>>> documented in [1], so here comes a patch that adds a Hyperlynx exporter.
>>>
>>> Notes:
>>> - since Kicad doesn't have a concept of board stackup (permittivities,
>>> loss tangent, dielectric types, etc.), the exporter writes a dummy
>>> stackup. Edit it to match the PCB spec in Hyperlynx.
>>> - no support for offset pad holes, slotted pad holes,
>>> trapezoid/polygonal pads (it seems HL format doesn't support such
>>> features or I need to figure out how to emulate them).
>>> - no support for thermal pads (yet)
>>> - no error reporting.
>>>
>>> Looking forward to your feedback & wish you happy testing,
>>> Tom
>>>
>>> [1] http://www.ibis.org/birds/bird33.txt
>>
>> Your patch built and tested without issue.  I just have a few minor
>> comments:
>>
>> Please remove all commented out debugging output code and one instance
>> of wxLogDebug unless you are planning to some additional debugging in
>> the future.  In which case, use wxLogTrace.
>>
>> Per section 4.2 in the coding policy[1], in source files there should be
>> 2 blank lines between functions except when they are in the class
>> definition in which case there should be 1 blank line.  I also saw a
>> couple of if{} statements with missing blank lines above.
>>
>> It is no longer necessary to wrap strings with the wxT() macro when
>> using the wxString assignment operator.
>>
>> The OUPUTFORMATTER::Print function can throw an IO_ERROR exception.  If
>> you don't handle this, KiCad will most likely crash when it occurs.  It
>> would be a good idea to add a try/catch block in
>> HYPERLYNX_EXPORTER::Run() and return false when a exception is caught.
>>
>> The copyright dates in the qa files are 2018.
> 
> Thanks Wayne,
> 
> It looks my settings for VSCode formatter don't catch all Kicad Coding
> Style rules. Need to fix that ;-). I'll push a version with fixes
> (including error handling via exceptions).
> 
> Tom
> 
> PS. We need to think about factoring out the exporters (including their
> private settings dialogs) to some sort of plugins...
> 

A plugin architecture for board exporters is a great idea.  This would
be an ideal candidate for a true external plugin architecture similar to
the 3D model plugin.  Maybe there is code that can be factored out into
a base external plugin object that can be reused for other plugins.

Wayne


Follow ups

References