def METHOD_NAME(n_row, n_col, nf, device_type, ports):
    logger.info(f'running {get_test_id()}')
    if n_row * n_col % 2 == 0 and n_col >= 2:
        c = MOSGenerator()
        parameters = {'M': n_row*n_col, 'NFIN': 4, 'real_inst_type': 'n'}
        if device_type == 'PARALLEL':
            parameters['NF'] = nf
        else:
            parameters['STACK'] = nf
        c.addNMOSArray(n_col, n_row, 1, None, ports, **parameters)
        c.gen_data(run_drc=True)
        if c.drc.num_errors > 0 or len(c.rd.opens) > 0 or len(c.rd.shorts) > 0:
            export_to_viewer(get_test_id(), c)
            assert False, f'{get_test_id()} DRC ports:{ports} type:{device_type} nf:{nf}, n_col:{n_col} n_row:{n_row}'